﻿2026-06-21T08:38:14.8097336Z ##[group]Run ./traceable-reqs check --json
2026-06-21T08:38:14.8097713Z [36;1m./traceable-reqs check --json[0m
2026-06-21T08:38:14.8110326Z shell: /usr/bin/bash -e {0}
2026-06-21T08:38:14.8110588Z ##[endgroup]
2026-06-21T08:38:14.8972253Z {
2026-06-21T08:38:14.8972834Z   "schemaVersion": 1,
2026-06-21T08:38:14.8973289Z   "summary": {
2026-06-21T08:38:14.8973666Z     "requirementCount": 275,
2026-06-21T08:38:14.8973995Z     "completeCount": 275,
2026-06-21T08:38:14.8974306Z     "incompleteCount": 0,
2026-06-21T08:38:14.8974630Z     "findingCount": 0
2026-06-21T08:38:14.8974917Z   },
2026-06-21T08:38:14.8975231Z   "requirements": [
2026-06-21T08:38:14.8975631Z     {
2026-06-21T08:38:14.8976061Z       "id": "REQ-API-1",
2026-06-21T08:38:14.8976648Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T08:38:14.8977306Z       "requiredStages": [
2026-06-21T08:38:14.8977784Z         "impl",
2026-06-21T08:38:14.8978165Z         "unit",
2026-06-21T08:38:14.8978534Z         "int"
2026-06-21T08:38:14.8979086Z       ],
2026-06-21T08:38:14.8979453Z       "stages": {
2026-06-21T08:38:14.8979829Z         "doc": {
2026-06-21T08:38:14.8980234Z           "complete": false,
2026-06-21T08:38:14.8980684Z           "evidence": []
2026-06-21T08:38:14.8981103Z         },
2026-06-21T08:38:14.8981483Z         "impl": {
2026-06-21T08:38:14.8981878Z           "complete": true,
2026-06-21T08:38:14.8982304Z           "evidence": [
2026-06-21T08:38:14.8982708Z             {
2026-06-21T08:38:14.8983147Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.8983678Z               "line": 15
2026-06-21T08:38:14.8984083Z             }
2026-06-21T08:38:14.8984397Z           ]
2026-06-21T08:38:14.8984726Z         },
2026-06-21T08:38:14.8985022Z         "int": {
2026-06-21T08:38:14.8985356Z           "complete": true,
2026-06-21T08:38:14.8985728Z           "evidence": [
2026-06-21T08:38:14.8986086Z             {
2026-06-21T08:38:14.8986447Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:14.8986898Z               "line": 13
2026-06-21T08:38:14.8987245Z             }
2026-06-21T08:38:14.8987565Z           ]
2026-06-21T08:38:14.8987875Z         },
2026-06-21T08:38:14.8988185Z         "unit": {
2026-06-21T08:38:14.8988513Z           "complete": true,
2026-06-21T08:38:14.8988885Z           "evidence": [
2026-06-21T08:38:14.8989293Z             {
2026-06-21T08:38:14.8989651Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.8990075Z               "line": 717
2026-06-21T08:38:14.8990433Z             },
2026-06-21T08:38:14.8990776Z             {
2026-06-21T08:38:14.8991123Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.8991573Z               "line": 804
2026-06-21T08:38:14.8991905Z             }
2026-06-21T08:38:14.8992235Z           ]
2026-06-21T08:38:14.8992545Z         }
2026-06-21T08:38:14.8992859Z       }
2026-06-21T08:38:14.8993174Z     },
2026-06-21T08:38:14.8993479Z     {
2026-06-21T08:38:14.8993804Z       "id": "REQ-API-2",
2026-06-21T08:38:14.8994338Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T08:38:14.8994924Z       "requiredStages": [
2026-06-21T08:38:14.8995267Z         "impl",
2026-06-21T08:38:14.8995573Z         "unit",
2026-06-21T08:38:14.8995887Z         "int"
2026-06-21T08:38:14.8996183Z       ],
2026-06-21T08:38:14.8996483Z       "stages": {
2026-06-21T08:38:14.8996788Z         "doc": {
2026-06-21T08:38:14.8997115Z           "complete": false,
2026-06-21T08:38:14.8997472Z           "evidence": []
2026-06-21T08:38:14.8997820Z         },
2026-06-21T08:38:14.8998125Z         "impl": {
2026-06-21T08:38:14.8998445Z           "complete": true,
2026-06-21T08:38:14.8998788Z           "evidence": [
2026-06-21T08:38:14.8999175Z             {
2026-06-21T08:38:14.8999535Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T08:38:14.9000278Z               "line": 17
2026-06-21T08:38:14.9000616Z             },
2026-06-21T08:38:14.9000926Z             {
2026-06-21T08:38:14.9001503Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:14.9001927Z               "line": 20
2026-06-21T08:38:14.9002255Z             },
2026-06-21T08:38:14.9002552Z             {
2026-06-21T08:38:14.9002885Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:14.9003308Z               "line": 142
2026-06-21T08:38:14.9003647Z             },
2026-06-21T08:38:14.9003962Z             {
2026-06-21T08:38:14.9004320Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9004752Z               "line": 24
2026-06-21T08:38:14.9005085Z             },
2026-06-21T08:38:14.9005404Z             {
2026-06-21T08:38:14.9005767Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9006190Z               "line": 41
2026-06-21T08:38:14.9006510Z             },
2026-06-21T08:38:14.9006824Z             {
2026-06-21T08:38:14.9007188Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9007633Z               "line": 213
2026-06-21T08:38:14.9007985Z             },
2026-06-21T08:38:14.9008276Z             {
2026-06-21T08:38:14.9008571Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9009100Z               "line": 255
2026-06-21T08:38:14.9009454Z             },
2026-06-21T08:38:14.9009769Z             {
2026-06-21T08:38:14.9010125Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9010557Z               "line": 334
2026-06-21T08:38:14.9010895Z             },
2026-06-21T08:38:14.9011200Z             {
2026-06-21T08:38:14.9011558Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9011987Z               "line": 397
2026-06-21T08:38:14.9012331Z             },
2026-06-21T08:38:14.9012650Z             {
2026-06-21T08:38:14.9013006Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9013450Z               "line": 436
2026-06-21T08:38:14.9013788Z             },
2026-06-21T08:38:14.9014093Z             {
2026-06-21T08:38:14.9014446Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9014856Z               "line": 17
2026-06-21T08:38:14.9015198Z             },
2026-06-21T08:38:14.9015501Z             {
2026-06-21T08:38:14.9015859Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9016279Z               "line": 30
2026-06-21T08:38:14.9016612Z             },
2026-06-21T08:38:14.9016918Z             {
2026-06-21T08:38:14.9017284Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9017719Z               "line": 63
2026-06-21T08:38:14.9018050Z             },
2026-06-21T08:38:14.9018277Z             {
2026-06-21T08:38:14.9018526Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9018808Z               "line": 77
2026-06-21T08:38:14.9019108Z             }
2026-06-21T08:38:14.9019317Z           ]
2026-06-21T08:38:14.9019527Z         },
2026-06-21T08:38:14.9019733Z         "int": {
2026-06-21T08:38:14.9019966Z           "complete": true,
2026-06-21T08:38:14.9020223Z           "evidence": [
2026-06-21T08:38:14.9020461Z             {
2026-06-21T08:38:14.9020718Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:14.9021016Z               "line": 14
2026-06-21T08:38:14.9021259Z             },
2026-06-21T08:38:14.9021478Z             {
2026-06-21T08:38:14.9021751Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:14.9022060Z               "line": 187
2026-06-21T08:38:14.9022291Z             }
2026-06-21T08:38:14.9022513Z           ]
2026-06-21T08:38:14.9022727Z         },
2026-06-21T08:38:14.9022935Z         "unit": {
2026-06-21T08:38:14.9023172Z           "complete": true,
2026-06-21T08:38:14.9023432Z           "evidence": [
2026-06-21T08:38:14.9023667Z             {
2026-06-21T08:38:14.9023934Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T08:38:14.9024414Z               "line": 82
2026-06-21T08:38:14.9024644Z             },
2026-06-21T08:38:14.9024864Z             {
2026-06-21T08:38:14.9025431Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:14.9025730Z               "line": 279
2026-06-21T08:38:14.9025971Z             },
2026-06-21T08:38:14.9026195Z             {
2026-06-21T08:38:14.9026452Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9026763Z               "line": 709
2026-06-21T08:38:14.9026995Z             },
2026-06-21T08:38:14.9027206Z             {
2026-06-21T08:38:14.9027468Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9027769Z               "line": 720
2026-06-21T08:38:14.9027998Z             },
2026-06-21T08:38:14.9028212Z             {
2026-06-21T08:38:14.9028474Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9028772Z               "line": 873
2026-06-21T08:38:14.9029081Z             },
2026-06-21T08:38:14.9029296Z             {
2026-06-21T08:38:14.9029572Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9029877Z               "line": 919
2026-06-21T08:38:14.9030130Z             },
2026-06-21T08:38:14.9030341Z             {
2026-06-21T08:38:14.9030603Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9030908Z               "line": 143
2026-06-21T08:38:14.9031149Z             },
2026-06-21T08:38:14.9031362Z             {
2026-06-21T08:38:14.9031639Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9032029Z               "line": 187
2026-06-21T08:38:14.9032353Z             }
2026-06-21T08:38:14.9032573Z           ]
2026-06-21T08:38:14.9032777Z         }
2026-06-21T08:38:14.9032979Z       }
2026-06-21T08:38:14.9033184Z     },
2026-06-21T08:38:14.9033393Z     {
2026-06-21T08:38:14.9033616Z       "id": "REQ-API-3",
2026-06-21T08:38:14.9034175Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T08:38:14.9034655Z       "requiredStages": [
2026-06-21T08:38:14.9035013Z         "impl",
2026-06-21T08:38:14.9035371Z         "unit",
2026-06-21T08:38:14.9035701Z         "int"
2026-06-21T08:38:14.9036068Z       ],
2026-06-21T08:38:14.9036404Z       "stages": {
2026-06-21T08:38:14.9036812Z         "doc": {
2026-06-21T08:38:14.9037193Z           "complete": false,
2026-06-21T08:38:14.9037565Z           "evidence": []
2026-06-21T08:38:14.9067042Z         },
2026-06-21T08:38:14.9067424Z         "impl": {
2026-06-21T08:38:14.9067749Z           "complete": true,
2026-06-21T08:38:14.9068047Z           "evidence": [
2026-06-21T08:38:14.9068287Z             {
2026-06-21T08:38:14.9068674Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9069193Z               "line": 27
2026-06-21T08:38:14.9069536Z             },
2026-06-21T08:38:14.9069856Z             {
2026-06-21T08:38:14.9070239Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9070681Z               "line": 566
2026-06-21T08:38:14.9071026Z             }
2026-06-21T08:38:14.9071365Z           ]
2026-06-21T08:38:14.9071665Z         },
2026-06-21T08:38:14.9071966Z         "int": {
2026-06-21T08:38:14.9072328Z           "complete": true,
2026-06-21T08:38:14.9072690Z           "evidence": [
2026-06-21T08:38:14.9073034Z             {
2026-06-21T08:38:14.9073413Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:14.9073861Z               "line": 261
2026-06-21T08:38:14.9074204Z             }
2026-06-21T08:38:14.9074518Z           ]
2026-06-21T08:38:14.9074828Z         },
2026-06-21T08:38:14.9075133Z         "unit": {
2026-06-21T08:38:14.9075476Z           "complete": true,
2026-06-21T08:38:14.9075871Z           "evidence": [
2026-06-21T08:38:14.9076223Z             {
2026-06-21T08:38:14.9076605Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9077068Z               "line": 280
2026-06-21T08:38:14.9077420Z             },
2026-06-21T08:38:14.9077735Z             {
2026-06-21T08:38:14.9078131Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9078886Z               "line": 948
2026-06-21T08:38:14.9079320Z             }
2026-06-21T08:38:14.9079806Z           ]
2026-06-21T08:38:14.9080116Z         }
2026-06-21T08:38:14.9080426Z       }
2026-06-21T08:38:14.9080731Z     },
2026-06-21T08:38:14.9081022Z     {
2026-06-21T08:38:14.9081336Z       "id": "REQ-API-4",
2026-06-21T08:38:14.9084210Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T08:38:14.9086384Z       "requiredStages": [
2026-06-21T08:38:14.9086736Z         "doc",
2026-06-21T08:38:14.9087075Z         "impl",
2026-06-21T08:38:14.9087399Z         "unit"
2026-06-21T08:38:14.9087695Z       ],
2026-06-21T08:38:14.9087999Z       "stages": {
2026-06-21T08:38:14.9088333Z         "doc": {
2026-06-21T08:38:14.9088671Z           "complete": true,
2026-06-21T08:38:14.9089129Z           "evidence": [
2026-06-21T08:38:14.9089370Z             {
2026-06-21T08:38:14.9089600Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9089866Z               "line": 149
2026-06-21T08:38:14.9090119Z             }
2026-06-21T08:38:14.9090443Z           ]
2026-06-21T08:38:14.9090748Z         },
2026-06-21T08:38:14.9091059Z         "impl": {
2026-06-21T08:38:14.9091392Z           "complete": true,
2026-06-21T08:38:14.9091746Z           "evidence": [
2026-06-21T08:38:14.9092077Z             {
2026-06-21T08:38:14.9092447Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.9092885Z               "line": 484
2026-06-21T08:38:14.9093228Z             }
2026-06-21T08:38:14.9093538Z           ]
2026-06-21T08:38:14.9093848Z         },
2026-06-21T08:38:14.9094154Z         "int": {
2026-06-21T08:38:14.9094496Z           "complete": false,
2026-06-21T08:38:14.9094885Z           "evidence": []
2026-06-21T08:38:14.9095223Z         },
2026-06-21T08:38:14.9095528Z         "unit": {
2026-06-21T08:38:14.9095882Z           "complete": true,
2026-06-21T08:38:14.9096244Z           "evidence": [
2026-06-21T08:38:14.9096582Z             {
2026-06-21T08:38:14.9096939Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.9097367Z               "line": 657
2026-06-21T08:38:14.9097725Z             },
2026-06-21T08:38:14.9098030Z             {
2026-06-21T08:38:14.9098398Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.9098828Z               "line": 681
2026-06-21T08:38:14.9099241Z             },
2026-06-21T08:38:14.9099551Z             {
2026-06-21T08:38:14.9099910Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.9115607Z               "line": 705
2026-06-21T08:38:14.9115947Z             }
2026-06-21T08:38:14.9116205Z           ]
2026-06-21T08:38:14.9116453Z         }
2026-06-21T08:38:14.9116702Z       }
2026-06-21T08:38:14.9116949Z     },
2026-06-21T08:38:14.9117187Z     {
2026-06-21T08:38:14.9117435Z       "id": "REQ-ARCH-1",
2026-06-21T08:38:14.9117783Z       "title": "Many small acyclically-layered crates",
2026-06-21T08:38:14.9118122Z       "requiredStages": [
2026-06-21T08:38:14.9118402Z         "impl"
2026-06-21T08:38:14.9118656Z       ],
2026-06-21T08:38:14.9118903Z       "stages": {
2026-06-21T08:38:14.9119233Z         "doc": {
2026-06-21T08:38:14.9119509Z           "complete": false,
2026-06-21T08:38:14.9119790Z           "evidence": []
2026-06-21T08:38:14.9120047Z         },
2026-06-21T08:38:14.9120295Z         "impl": {
2026-06-21T08:38:14.9120563Z           "complete": true,
2026-06-21T08:38:14.9120848Z           "evidence": [
2026-06-21T08:38:14.9121117Z             {
2026-06-21T08:38:14.9121402Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T08:38:14.9121937Z               "line": 18
2026-06-21T08:38:14.9122209Z             },
2026-06-21T08:38:14.9122562Z             {
2026-06-21T08:38:14.9122857Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T08:38:14.9123200Z               "line": 12
2026-06-21T08:38:14.9123468Z             },
2026-06-21T08:38:14.9123710Z             {
2026-06-21T08:38:14.9124008Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T08:38:14.9124332Z               "line": 12
2026-06-21T08:38:14.9124594Z             }
2026-06-21T08:38:14.9124838Z           ]
2026-06-21T08:38:14.9125081Z         },
2026-06-21T08:38:14.9125329Z         "int": {
2026-06-21T08:38:14.9125591Z           "complete": false,
2026-06-21T08:38:14.9125872Z           "evidence": []
2026-06-21T08:38:14.9126138Z         },
2026-06-21T08:38:14.9126380Z         "unit": {
2026-06-21T08:38:14.9126652Z           "complete": false,
2026-06-21T08:38:14.9126943Z           "evidence": []
2026-06-21T08:38:14.9127199Z         }
2026-06-21T08:38:14.9127442Z       }
2026-06-21T08:38:14.9127680Z     },
2026-06-21T08:38:14.9127920Z     {
2026-06-21T08:38:14.9128187Z       "id": "REQ-ARCH-2",
2026-06-21T08:38:14.9128545Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T08:38:14.9128917Z       "requiredStages": [
2026-06-21T08:38:14.9129250Z         "impl"
2026-06-21T08:38:14.9129492Z       ],
2026-06-21T08:38:14.9129729Z       "stages": {
2026-06-21T08:38:14.9129987Z         "doc": {
2026-06-21T08:38:14.9130255Z           "complete": false,
2026-06-21T08:38:14.9130536Z           "evidence": []
2026-06-21T08:38:14.9130799Z         },
2026-06-21T08:38:14.9131042Z         "impl": {
2026-06-21T08:38:14.9131312Z           "complete": true,
2026-06-21T08:38:14.9131582Z           "evidence": [
2026-06-21T08:38:14.9131835Z             {
2026-06-21T08:38:14.9132135Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T08:38:14.9132455Z               "line": 18
2026-06-21T08:38:14.9132717Z             }
2026-06-21T08:38:14.9132965Z           ]
2026-06-21T08:38:14.9133203Z         },
2026-06-21T08:38:14.9133436Z         "int": {
2026-06-21T08:38:14.9133713Z           "complete": false,
2026-06-21T08:38:14.9134000Z           "evidence": []
2026-06-21T08:38:14.9134255Z         },
2026-06-21T08:38:14.9134500Z         "unit": {
2026-06-21T08:38:14.9134768Z           "complete": false,
2026-06-21T08:38:14.9135050Z           "evidence": []
2026-06-21T08:38:14.9135312Z         }
2026-06-21T08:38:14.9135556Z       }
2026-06-21T08:38:14.9135798Z     },
2026-06-21T08:38:14.9136041Z     {
2026-06-21T08:38:14.9136304Z       "id": "REQ-ARCH-3",
2026-06-21T08:38:14.9136698Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T08:38:14.9137106Z       "requiredStages": [
2026-06-21T08:38:14.9137377Z         "impl",
2026-06-21T08:38:14.9137626Z         "unit"
2026-06-21T08:38:14.9137865Z       ],
2026-06-21T08:38:14.9138108Z       "stages": {
2026-06-21T08:38:14.9138355Z         "doc": {
2026-06-21T08:38:14.9138627Z           "complete": false,
2026-06-21T08:38:14.9138923Z           "evidence": []
2026-06-21T08:38:14.9139271Z         },
2026-06-21T08:38:14.9139528Z         "impl": {
2026-06-21T08:38:14.9139785Z           "complete": true,
2026-06-21T08:38:14.9140062Z           "evidence": [
2026-06-21T08:38:14.9140329Z             {
2026-06-21T08:38:14.9140629Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T08:38:14.9140948Z               "line": 34
2026-06-21T08:38:14.9141215Z             },
2026-06-21T08:38:14.9141463Z             {
2026-06-21T08:38:14.9141763Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T08:38:14.9142085Z               "line": 41
2026-06-21T08:38:14.9142343Z             }
2026-06-21T08:38:14.9142590Z           ]
2026-06-21T08:38:14.9142837Z         },
2026-06-21T08:38:14.9143071Z         "int": {
2026-06-21T08:38:14.9143344Z           "complete": false,
2026-06-21T08:38:14.9143634Z           "evidence": []
2026-06-21T08:38:14.9144025Z         },
2026-06-21T08:38:14.9144269Z         "unit": {
2026-06-21T08:38:14.9144537Z           "complete": true,
2026-06-21T08:38:14.9144915Z           "evidence": [
2026-06-21T08:38:14.9145167Z             {
2026-06-21T08:38:14.9145467Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T08:38:14.9145787Z               "line": 51
2026-06-21T08:38:14.9146053Z             },
2026-06-21T08:38:14.9146301Z             {
2026-06-21T08:38:14.9146596Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T08:38:14.9146920Z               "line": 71
2026-06-21T08:38:14.9147183Z             },
2026-06-21T08:38:14.9147430Z             {
2026-06-21T08:38:14.9147719Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T08:38:14.9148034Z               "line": 83
2026-06-21T08:38:14.9148276Z             }
2026-06-21T08:38:14.9148520Z           ]
2026-06-21T08:38:14.9148754Z         }
2026-06-21T08:38:14.9149073Z       }
2026-06-21T08:38:14.9149322Z     },
2026-06-21T08:38:14.9149564Z     {
2026-06-21T08:38:14.9149817Z       "id": "REQ-ARCH-4",
2026-06-21T08:38:14.9150202Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T08:38:14.9150607Z       "requiredStages": [
2026-06-21T08:38:14.9150869Z         "impl",
2026-06-21T08:38:14.9151112Z         "unit"
2026-06-21T08:38:14.9151351Z       ],
2026-06-21T08:38:14.9151605Z       "stages": {
2026-06-21T08:38:14.9151858Z         "doc": {
2026-06-21T08:38:14.9152124Z           "complete": false,
2026-06-21T08:38:14.9152399Z           "evidence": []
2026-06-21T08:38:14.9152664Z         },
2026-06-21T08:38:14.9152917Z         "impl": {
2026-06-21T08:38:14.9153189Z           "complete": true,
2026-06-21T08:38:14.9153465Z           "evidence": [
2026-06-21T08:38:14.9153727Z             {
2026-06-21T08:38:14.9154022Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9154337Z               "line": 165
2026-06-21T08:38:14.9154595Z             },
2026-06-21T08:38:14.9154852Z             {
2026-06-21T08:38:14.9155139Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9155457Z               "line": 188
2026-06-21T08:38:14.9155717Z             },
2026-06-21T08:38:14.9155974Z             {
2026-06-21T08:38:14.9156274Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9156594Z               "line": 208
2026-06-21T08:38:14.9156861Z             },
2026-06-21T08:38:14.9157119Z             {
2026-06-21T08:38:14.9157419Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9157729Z               "line": 223
2026-06-21T08:38:14.9158000Z             },
2026-06-21T08:38:14.9158240Z             {
2026-06-21T08:38:14.9158536Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9158860Z               "line": 273
2026-06-21T08:38:14.9159190Z             }
2026-06-21T08:38:14.9159437Z           ]
2026-06-21T08:38:14.9159671Z         },
2026-06-21T08:38:14.9159915Z         "int": {
2026-06-21T08:38:14.9160197Z           "complete": false,
2026-06-21T08:38:14.9160478Z           "evidence": []
2026-06-21T08:38:14.9160738Z         },
2026-06-21T08:38:14.9160982Z         "unit": {
2026-06-21T08:38:14.9161239Z           "complete": true,
2026-06-21T08:38:14.9161511Z           "evidence": [
2026-06-21T08:38:14.9161773Z             {
2026-06-21T08:38:14.9162064Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9162388Z               "line": 334
2026-06-21T08:38:14.9162654Z             },
2026-06-21T08:38:14.9162907Z             {
2026-06-21T08:38:14.9163187Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9163511Z               "line": 344
2026-06-21T08:38:14.9163778Z             },
2026-06-21T08:38:14.9164045Z             {
2026-06-21T08:38:14.9164331Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9164645Z               "line": 355
2026-06-21T08:38:14.9164907Z             },
2026-06-21T08:38:14.9165155Z             {
2026-06-21T08:38:14.9165580Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9165907Z               "line": 366
2026-06-21T08:38:14.9166272Z             },
2026-06-21T08:38:14.9166524Z             {
2026-06-21T08:38:14.9166811Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9167120Z               "line": 378
2026-06-21T08:38:14.9167379Z             },
2026-06-21T08:38:14.9167645Z             {
2026-06-21T08:38:14.9167937Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9189609Z               "line": 391
2026-06-21T08:38:14.9189969Z             },
2026-06-21T08:38:14.9190236Z             {
2026-06-21T08:38:14.9190535Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9190865Z               "line": 402
2026-06-21T08:38:14.9191142Z             },
2026-06-21T08:38:14.9191385Z             {
2026-06-21T08:38:14.9191671Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9191999Z               "line": 419
2026-06-21T08:38:14.9192286Z             },
2026-06-21T08:38:14.9192529Z             {
2026-06-21T08:38:14.9192819Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:14.9193134Z               "line": 547
2026-06-21T08:38:14.9193391Z             }
2026-06-21T08:38:14.9193630Z           ]
2026-06-21T08:38:14.9193864Z         }
2026-06-21T08:38:14.9194103Z       }
2026-06-21T08:38:14.9194345Z     },
2026-06-21T08:38:14.9194573Z     {
2026-06-21T08:38:14.9194825Z       "id": "REQ-CLI-1",
2026-06-21T08:38:14.9196163Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T08:38:14.9197427Z       "requiredStages": [
2026-06-21T08:38:14.9197711Z         "impl",
2026-06-21T08:38:14.9197963Z         "unit"
2026-06-21T08:38:14.9198210Z       ],
2026-06-21T08:38:14.9198458Z       "stages": {
2026-06-21T08:38:14.9198711Z         "doc": {
2026-06-21T08:38:14.9199039Z           "complete": false,
2026-06-21T08:38:14.9199317Z           "evidence": []
2026-06-21T08:38:14.9199579Z         },
2026-06-21T08:38:14.9199808Z         "impl": {
2026-06-21T08:38:14.9200073Z           "complete": true,
2026-06-21T08:38:14.9200339Z           "evidence": [
2026-06-21T08:38:14.9200591Z             {
2026-06-21T08:38:14.9200873Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9201188Z               "line": 225
2026-06-21T08:38:14.9201450Z             },
2026-06-21T08:38:14.9201702Z             {
2026-06-21T08:38:14.9201964Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9202264Z               "line": 1093
2026-06-21T08:38:14.9202527Z             },
2026-06-21T08:38:14.9202766Z             {
2026-06-21T08:38:14.9203055Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9203360Z               "line": 1720
2026-06-21T08:38:14.9203617Z             },
2026-06-21T08:38:14.9203861Z             {
2026-06-21T08:38:14.9204142Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9204447Z               "line": 3124
2026-06-21T08:38:14.9204711Z             }
2026-06-21T08:38:14.9204948Z           ]
2026-06-21T08:38:14.9205181Z         },
2026-06-21T08:38:14.9205413Z         "int": {
2026-06-21T08:38:14.9205674Z           "complete": false,
2026-06-21T08:38:14.9205941Z           "evidence": []
2026-06-21T08:38:14.9206207Z         },
2026-06-21T08:38:14.9206446Z         "unit": {
2026-06-21T08:38:14.9206714Z           "complete": true,
2026-06-21T08:38:14.9206990Z           "evidence": [
2026-06-21T08:38:14.9207254Z             {
2026-06-21T08:38:14.9207530Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9207840Z               "line": 7947
2026-06-21T08:38:14.9208095Z             }
2026-06-21T08:38:14.9208561Z           ]
2026-06-21T08:38:14.9208799Z         }
2026-06-21T08:38:14.9209089Z       }
2026-06-21T08:38:14.9209424Z     },
2026-06-21T08:38:14.9209657Z     {
2026-06-21T08:38:14.9209900Z       "id": "REQ-CLI-2",
2026-06-21T08:38:14.9210829Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T08:38:14.9211700Z       "requiredStages": [
2026-06-21T08:38:14.9211971Z         "impl",
2026-06-21T08:38:14.9212219Z         "unit"
2026-06-21T08:38:14.9212462Z       ],
2026-06-21T08:38:14.9212697Z       "stages": {
2026-06-21T08:38:14.9212949Z         "doc": {
2026-06-21T08:38:14.9213211Z           "complete": false,
2026-06-21T08:38:14.9213486Z           "evidence": []
2026-06-21T08:38:14.9213750Z         },
2026-06-21T08:38:14.9213988Z         "impl": {
2026-06-21T08:38:14.9214269Z           "complete": true,
2026-06-21T08:38:14.9214540Z           "evidence": [
2026-06-21T08:38:14.9214807Z             {
2026-06-21T08:38:14.9215098Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9215427Z               "line": 414
2026-06-21T08:38:14.9215698Z             },
2026-06-21T08:38:14.9215945Z             {
2026-06-21T08:38:14.9216259Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T08:38:14.9216583Z               "line": 97
2026-06-21T08:38:14.9216841Z             },
2026-06-21T08:38:14.9217092Z             {
2026-06-21T08:38:14.9217388Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:14.9217708Z               "line": 256
2026-06-21T08:38:14.9217965Z             },
2026-06-21T08:38:14.9218204Z             {
2026-06-21T08:38:14.9218477Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9218789Z               "line": 434
2026-06-21T08:38:14.9219102Z             },
2026-06-21T08:38:14.9219359Z             {
2026-06-21T08:38:14.9219630Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9219945Z               "line": 1174
2026-06-21T08:38:14.9220208Z             },
2026-06-21T08:38:14.9220456Z             {
2026-06-21T08:38:14.9220733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9221043Z               "line": 1958
2026-06-21T08:38:14.9221308Z             },
2026-06-21T08:38:14.9221548Z             {
2026-06-21T08:38:14.9221816Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9222131Z               "line": 2047
2026-06-21T08:38:14.9222403Z             },
2026-06-21T08:38:14.9222642Z             {
2026-06-21T08:38:14.9222919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9223229Z               "line": 2108
2026-06-21T08:38:14.9223500Z             }
2026-06-21T08:38:14.9223743Z           ]
2026-06-21T08:38:14.9223981Z         },
2026-06-21T08:38:14.9224223Z         "int": {
2026-06-21T08:38:14.9224495Z           "complete": false,
2026-06-21T08:38:14.9224781Z           "evidence": []
2026-06-21T08:38:14.9225042Z         },
2026-06-21T08:38:14.9225286Z         "unit": {
2026-06-21T08:38:14.9225545Z           "complete": true,
2026-06-21T08:38:14.9225812Z           "evidence": [
2026-06-21T08:38:14.9226073Z             {
2026-06-21T08:38:14.9226362Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:14.9226684Z               "line": 338
2026-06-21T08:38:14.9226942Z             },
2026-06-21T08:38:14.9227191Z             {
2026-06-21T08:38:14.9227462Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9227773Z               "line": 8102
2026-06-21T08:38:14.9228040Z             }
2026-06-21T08:38:14.9228282Z           ]
2026-06-21T08:38:14.9228521Z         }
2026-06-21T08:38:14.9228755Z       }
2026-06-21T08:38:14.9229051Z     },
2026-06-21T08:38:14.9229292Z     {
2026-06-21T08:38:14.9229547Z       "id": "REQ-CLI-3",
2026-06-21T08:38:14.9230491Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T08:38:14.9231580Z       "requiredStages": [
2026-06-21T08:38:14.9231849Z         "impl",
2026-06-21T08:38:14.9232085Z         "unit"
2026-06-21T08:38:14.9232334Z       ],
2026-06-21T08:38:14.9232582Z       "stages": {
2026-06-21T08:38:14.9232840Z         "doc": {
2026-06-21T08:38:14.9233101Z           "complete": false,
2026-06-21T08:38:14.9233391Z           "evidence": []
2026-06-21T08:38:14.9233654Z         },
2026-06-21T08:38:14.9233883Z         "impl": {
2026-06-21T08:38:14.9234137Z           "complete": true,
2026-06-21T08:38:14.9234404Z           "evidence": [
2026-06-21T08:38:14.9234649Z             {
2026-06-21T08:38:14.9234922Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9235236Z               "line": 1087
2026-06-21T08:38:14.9235494Z             }
2026-06-21T08:38:14.9235733Z           ]
2026-06-21T08:38:14.9235980Z         },
2026-06-21T08:38:14.9236209Z         "int": {
2026-06-21T08:38:14.9236476Z           "complete": false,
2026-06-21T08:38:14.9236753Z           "evidence": []
2026-06-21T08:38:14.9237018Z         },
2026-06-21T08:38:14.9237263Z         "unit": {
2026-06-21T08:38:14.9237526Z           "complete": true,
2026-06-21T08:38:14.9237803Z           "evidence": [
2026-06-21T08:38:14.9238070Z             {
2026-06-21T08:38:14.9238361Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9238676Z               "line": 7912
2026-06-21T08:38:14.9239033Z             }
2026-06-21T08:38:14.9239282Z           ]
2026-06-21T08:38:14.9239525Z         }
2026-06-21T08:38:14.9239762Z       }
2026-06-21T08:38:14.9239994Z     },
2026-06-21T08:38:14.9240275Z     {
2026-06-21T08:38:14.9240542Z       "id": "REQ-CLI-4",
2026-06-21T08:38:14.9242993Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T08:38:14.9244959Z       "requiredStages": [],
2026-06-21T08:38:14.9245247Z       "stages": {
2026-06-21T08:38:14.9245505Z         "doc": {
2026-06-21T08:38:14.9245773Z           "complete": false,
2026-06-21T08:38:14.9246172Z           "evidence": []
2026-06-21T08:38:14.9246550Z         },
2026-06-21T08:38:14.9246984Z         "impl": {
2026-06-21T08:38:14.9247374Z           "complete": true,
2026-06-21T08:38:14.9247819Z           "evidence": [
2026-06-21T08:38:14.9248177Z             {
2026-06-21T08:38:14.9248521Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9249049Z               "line": 5678
2026-06-21T08:38:14.9249417Z             }
2026-06-21T08:38:14.9249771Z           ]
2026-06-21T08:38:14.9250100Z         },
2026-06-21T08:38:14.9250431Z         "int": {
2026-06-21T08:38:14.9250869Z           "complete": false,
2026-06-21T08:38:14.9251240Z           "evidence": []
2026-06-21T08:38:14.9251611Z         },
2026-06-21T08:38:14.9251978Z         "unit": {
2026-06-21T08:38:14.9252328Z           "complete": false,
2026-06-21T08:38:14.9252743Z           "evidence": []
2026-06-21T08:38:14.9253111Z         }
2026-06-21T08:38:14.9253426Z       }
2026-06-21T08:38:14.9253839Z     },
2026-06-21T08:38:14.9254164Z     {
2026-06-21T08:38:14.9254574Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T08:38:14.9257873Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T08:38:14.9261347Z       "requiredStages": [
2026-06-21T08:38:14.9261719Z         "impl",
2026-06-21T08:38:14.9262157Z         "unit"
2026-06-21T08:38:14.9262496Z       ],
2026-06-21T08:38:14.9262820Z       "stages": {
2026-06-21T08:38:14.9263208Z         "doc": {
2026-06-21T08:38:14.9263577Z           "complete": false,
2026-06-21T08:38:14.9263977Z           "evidence": []
2026-06-21T08:38:14.9264334Z         },
2026-06-21T08:38:14.9264676Z         "impl": {
2026-06-21T08:38:14.9265105Z           "complete": true,
2026-06-21T08:38:14.9265483Z           "evidence": [
2026-06-21T08:38:14.9265855Z             {
2026-06-21T08:38:14.9266263Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9266673Z               "line": 8
2026-06-21T08:38:14.9267070Z             },
2026-06-21T08:38:14.9267414Z             {
2026-06-21T08:38:14.9267837Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9268271Z               "line": 51
2026-06-21T08:38:14.9268622Z             },
2026-06-21T08:38:14.9269060Z             {
2026-06-21T08:38:14.9269455Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9269845Z               "line": 82
2026-06-21T08:38:14.9270251Z             },
2026-06-21T08:38:14.9270586Z             {
2026-06-21T08:38:14.9271028Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9271442Z               "line": 229
2026-06-21T08:38:14.9271782Z             }
2026-06-21T08:38:14.9272179Z           ]
2026-06-21T08:38:14.9272499Z         },
2026-06-21T08:38:14.9272866Z         "int": {
2026-06-21T08:38:14.9273247Z           "complete": false,
2026-06-21T08:38:14.9273618Z           "evidence": []
2026-06-21T08:38:14.9274065Z         },
2026-06-21T08:38:14.9274397Z         "unit": {
2026-06-21T08:38:14.9274789Z           "complete": true,
2026-06-21T08:38:14.9275175Z           "evidence": [
2026-06-21T08:38:14.9275518Z             {
2026-06-21T08:38:14.9275932Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9276348Z               "line": 249
2026-06-21T08:38:14.9276786Z             },
2026-06-21T08:38:14.9277134Z             {
2026-06-21T08:38:14.9277524Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9277969Z               "line": 256
2026-06-21T08:38:14.9278322Z             },
2026-06-21T08:38:14.9278637Z             {
2026-06-21T08:38:14.9279125Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9279543Z               "line": 263
2026-06-21T08:38:14.9279958Z             },
2026-06-21T08:38:14.9280297Z             {
2026-06-21T08:38:14.9280649Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9281107Z               "line": 270
2026-06-21T08:38:14.9281480Z             },
2026-06-21T08:38:14.9281837Z             {
2026-06-21T08:38:14.9282239Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9282638Z               "line": 297
2026-06-21T08:38:14.9283054Z             },
2026-06-21T08:38:14.9283388Z             {
2026-06-21T08:38:14.9283907Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9284338Z               "line": 307
2026-06-21T08:38:14.9284787Z             },
2026-06-21T08:38:14.9285172Z             {
2026-06-21T08:38:14.9285548Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9286026Z               "line": 317
2026-06-21T08:38:14.9286379Z             },
2026-06-21T08:38:14.9286726Z             {
2026-06-21T08:38:14.9287117Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9287517Z               "line": 331
2026-06-21T08:38:14.9287875Z             },
2026-06-21T08:38:14.9288252Z             {
2026-06-21T08:38:14.9288628Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9289182Z               "line": 340
2026-06-21T08:38:14.9289540Z             },
2026-06-21T08:38:14.9289862Z             {
2026-06-21T08:38:14.9290274Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9290679Z               "line": 348
2026-06-21T08:38:14.9291052Z             }
2026-06-21T08:38:14.9291391Z           ]
2026-06-21T08:38:14.9291740Z         }
2026-06-21T08:38:14.9292129Z       }
2026-06-21T08:38:14.9292458Z     },
2026-06-21T08:38:14.9292803Z     {
2026-06-21T08:38:14.9293199Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T08:38:14.9301506Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T08:38:14.9305879Z       "requiredStages": [
2026-06-21T08:38:14.9306288Z         "impl",
2026-06-21T08:38:14.9306659Z         "unit"
2026-06-21T08:38:14.9306997Z       ],
2026-06-21T08:38:14.9307380Z       "stages": {
2026-06-21T08:38:14.9307729Z         "doc": {
2026-06-21T08:38:14.9308171Z           "complete": false,
2026-06-21T08:38:14.9308575Z           "evidence": []
2026-06-21T08:38:14.9308923Z         },
2026-06-21T08:38:14.9309368Z         "impl": {
2026-06-21T08:38:14.9309725Z           "complete": true,
2026-06-21T08:38:14.9310072Z           "evidence": [
2026-06-21T08:38:14.9310482Z             {
2026-06-21T08:38:14.9310872Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9311358Z               "line": 141
2026-06-21T08:38:14.9311710Z             },
2026-06-21T08:38:14.9312034Z             {
2026-06-21T08:38:14.9312449Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9312850Z               "line": 1376
2026-06-21T08:38:14.9313245Z             },
2026-06-21T08:38:14.9313588Z             {
2026-06-21T08:38:14.9313961Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9314444Z               "line": 2145
2026-06-21T08:38:14.9314811Z             },
2026-06-21T08:38:14.9315325Z             {
2026-06-21T08:38:14.9315713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9316240Z               "line": 4368
2026-06-21T08:38:14.9316638Z             },
2026-06-21T08:38:14.9316991Z             {
2026-06-21T08:38:14.9317340Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9317834Z               "line": 4466
2026-06-21T08:38:14.9318255Z             },
2026-06-21T08:38:14.9318627Z             {
2026-06-21T08:38:14.9319059Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9319431Z               "line": 5257
2026-06-21T08:38:14.9319846Z             },
2026-06-21T08:38:14.9320180Z             {
2026-06-21T08:38:14.9327150Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9327527Z               "line": 39
2026-06-21T08:38:14.9327794Z             }
2026-06-21T08:38:14.9328047Z           ]
2026-06-21T08:38:14.9328281Z         },
2026-06-21T08:38:14.9328539Z         "int": {
2026-06-21T08:38:14.9328820Z           "complete": false,
2026-06-21T08:38:14.9329197Z           "evidence": []
2026-06-21T08:38:14.9329459Z         },
2026-06-21T08:38:14.9329695Z         "unit": {
2026-06-21T08:38:14.9329958Z           "complete": true,
2026-06-21T08:38:14.9330240Z           "evidence": [
2026-06-21T08:38:14.9330497Z             {
2026-06-21T08:38:14.9330788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9331108Z               "line": 10272
2026-06-21T08:38:14.9331375Z             },
2026-06-21T08:38:14.9331622Z             {
2026-06-21T08:38:14.9331907Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9332229Z               "line": 281
2026-06-21T08:38:14.9332496Z             },
2026-06-21T08:38:14.9332731Z             {
2026-06-21T08:38:14.9333007Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9333317Z               "line": 358
2026-06-21T08:38:14.9333574Z             },
2026-06-21T08:38:14.9333822Z             {
2026-06-21T08:38:14.9334107Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9334426Z               "line": 381
2026-06-21T08:38:14.9334690Z             },
2026-06-21T08:38:14.9334941Z             {
2026-06-21T08:38:14.9335230Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T08:38:14.9335554Z               "line": 395
2026-06-21T08:38:14.9335825Z             }
2026-06-21T08:38:14.9336064Z           ]
2026-06-21T08:38:14.9336307Z         }
2026-06-21T08:38:14.9336542Z       }
2026-06-21T08:38:14.9336775Z     },
2026-06-21T08:38:14.9337013Z     {
2026-06-21T08:38:14.9337270Z       "id": "REQ-CONSENT-1",
2026-06-21T08:38:14.9338397Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T08:38:14.9339623Z       "requiredStages": [
2026-06-21T08:38:14.9339894Z         "impl",
2026-06-21T08:38:14.9340137Z         "unit"
2026-06-21T08:38:14.9340380Z       ],
2026-06-21T08:38:14.9340623Z       "stages": {
2026-06-21T08:38:14.9340875Z         "doc": {
2026-06-21T08:38:14.9341134Z           "complete": false,
2026-06-21T08:38:14.9341424Z           "evidence": []
2026-06-21T08:38:14.9341677Z         },
2026-06-21T08:38:14.9341925Z         "impl": {
2026-06-21T08:38:14.9342192Z           "complete": true,
2026-06-21T08:38:14.9342462Z           "evidence": [
2026-06-21T08:38:14.9342709Z             {
2026-06-21T08:38:14.9343009Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9343324Z               "line": 27
2026-06-21T08:38:14.9343591Z             },
2026-06-21T08:38:14.9343829Z             {
2026-06-21T08:38:14.9344114Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9344424Z               "line": 75
2026-06-21T08:38:14.9344682Z             },
2026-06-21T08:38:14.9345093Z             {
2026-06-21T08:38:14.9345368Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9345804Z               "line": 98
2026-06-21T08:38:14.9346057Z             },
2026-06-21T08:38:14.9346305Z             {
2026-06-21T08:38:14.9346591Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9346911Z               "line": 82
2026-06-21T08:38:14.9347173Z             },
2026-06-21T08:38:14.9347412Z             {
2026-06-21T08:38:14.9347694Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9348006Z               "line": 109
2026-06-21T08:38:14.9348266Z             },
2026-06-21T08:38:14.9348505Z             {
2026-06-21T08:38:14.9348791Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9349162Z               "line": 127
2026-06-21T08:38:14.9349443Z             },
2026-06-21T08:38:14.9349711Z             {
2026-06-21T08:38:14.9349988Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9350303Z               "line": 142
2026-06-21T08:38:14.9350561Z             },
2026-06-21T08:38:14.9350821Z             {
2026-06-21T08:38:14.9351106Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9351411Z               "line": 7048
2026-06-21T08:38:14.9351675Z             }
2026-06-21T08:38:14.9351928Z           ]
2026-06-21T08:38:14.9352156Z         },
2026-06-21T08:38:14.9352399Z         "int": {
2026-06-21T08:38:14.9352656Z           "complete": false,
2026-06-21T08:38:14.9352942Z           "evidence": []
2026-06-21T08:38:14.9353208Z         },
2026-06-21T08:38:14.9353444Z         "unit": {
2026-06-21T08:38:14.9353706Z           "complete": true,
2026-06-21T08:38:14.9353988Z           "evidence": [
2026-06-21T08:38:14.9354251Z             {
2026-06-21T08:38:14.9354542Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9354861Z               "line": 334
2026-06-21T08:38:14.9355124Z             },
2026-06-21T08:38:14.9355367Z             {
2026-06-21T08:38:14.9355663Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9355985Z               "line": 380
2026-06-21T08:38:14.9356249Z             },
2026-06-21T08:38:14.9356507Z             {
2026-06-21T08:38:14.9356784Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9357099Z               "line": 391
2026-06-21T08:38:14.9357361Z             },
2026-06-21T08:38:14.9357594Z             {
2026-06-21T08:38:14.9357890Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9358244Z               "line": 165
2026-06-21T08:38:14.9358499Z             },
2026-06-21T08:38:14.9358745Z             {
2026-06-21T08:38:14.9359093Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9359412Z               "line": 184
2026-06-21T08:38:14.9359660Z             },
2026-06-21T08:38:14.9359909Z             {
2026-06-21T08:38:14.9360195Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T08:38:14.9360506Z               "line": 204
2026-06-21T08:38:14.9360762Z             },
2026-06-21T08:38:14.9361010Z             {
2026-06-21T08:38:14.9361291Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9361596Z               "line": 8334
2026-06-21T08:38:14.9361868Z             }
2026-06-21T08:38:14.9362111Z           ]
2026-06-21T08:38:14.9362353Z         }
2026-06-21T08:38:14.9362583Z       }
2026-06-21T08:38:14.9362817Z     },
2026-06-21T08:38:14.9363060Z     {
2026-06-21T08:38:14.9363312Z       "id": "REQ-CONSENT-2",
2026-06-21T08:38:14.9364348Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T08:38:14.9365336Z       "requiredStages": [
2026-06-21T08:38:14.9365598Z         "impl",
2026-06-21T08:38:14.9365966Z         "unit"
2026-06-21T08:38:14.9366213Z       ],
2026-06-21T08:38:14.9366455Z       "stages": {
2026-06-21T08:38:14.9366805Z         "doc": {
2026-06-21T08:38:14.9367067Z           "complete": false,
2026-06-21T08:38:14.9367354Z           "evidence": []
2026-06-21T08:38:14.9367612Z         },
2026-06-21T08:38:14.9367854Z         "impl": {
2026-06-21T08:38:14.9368121Z           "complete": true,
2026-06-21T08:38:14.9368393Z           "evidence": [
2026-06-21T08:38:14.9368655Z             {
2026-06-21T08:38:14.9369016Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9369343Z               "line": 140
2026-06-21T08:38:14.9369625Z             },
2026-06-21T08:38:14.9369859Z             {
2026-06-21T08:38:14.9370150Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9370464Z               "line": 165
2026-06-21T08:38:14.9370721Z             },
2026-06-21T08:38:14.9370964Z             {
2026-06-21T08:38:14.9371251Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9371580Z               "line": 199
2026-06-21T08:38:14.9371837Z             },
2026-06-21T08:38:14.9372090Z             {
2026-06-21T08:38:14.9372380Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9372695Z               "line": 241
2026-06-21T08:38:14.9372952Z             },
2026-06-21T08:38:14.9373204Z             {
2026-06-21T08:38:14.9373500Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9373815Z               "line": 269
2026-06-21T08:38:14.9374072Z             },
2026-06-21T08:38:14.9374310Z             {
2026-06-21T08:38:14.9374603Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9374918Z               "line": 300
2026-06-21T08:38:14.9375179Z             },
2026-06-21T08:38:14.9375423Z             {
2026-06-21T08:38:14.9375705Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9376020Z               "line": 6839
2026-06-21T08:38:14.9376295Z             },
2026-06-21T08:38:14.9376545Z             {
2026-06-21T08:38:14.9376826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9377138Z               "line": 6897
2026-06-21T08:38:14.9377393Z             }
2026-06-21T08:38:14.9377632Z           ]
2026-06-21T08:38:14.9377867Z         },
2026-06-21T08:38:14.9378110Z         "int": {
2026-06-21T08:38:14.9378371Z           "complete": false,
2026-06-21T08:38:14.9378662Z           "evidence": []
2026-06-21T08:38:14.9379393Z         },
2026-06-21T08:38:14.9379657Z         "unit": {
2026-06-21T08:38:14.9379931Z           "complete": true,
2026-06-21T08:38:14.9380209Z           "evidence": [
2026-06-21T08:38:14.9380466Z             {
2026-06-21T08:38:14.9380757Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9381072Z               "line": 419
2026-06-21T08:38:14.9381344Z             },
2026-06-21T08:38:14.9381587Z             {
2026-06-21T08:38:14.9381872Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9382192Z               "line": 436
2026-06-21T08:38:14.9382449Z             },
2026-06-21T08:38:14.9382707Z             {
2026-06-21T08:38:14.9382993Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9383312Z               "line": 472
2026-06-21T08:38:14.9383565Z             },
2026-06-21T08:38:14.9383812Z             {
2026-06-21T08:38:14.9384093Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:14.9384403Z               "line": 516
2026-06-21T08:38:14.9384660Z             },
2026-06-21T08:38:14.9384903Z             {
2026-06-21T08:38:14.9385173Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9385483Z               "line": 9614
2026-06-21T08:38:14.9385735Z             },
2026-06-21T08:38:14.9385987Z             {
2026-06-21T08:38:14.9386265Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9386570Z               "line": 9696
2026-06-21T08:38:14.9386833Z             }
2026-06-21T08:38:14.9387081Z           ]
2026-06-21T08:38:14.9387439Z         }
2026-06-21T08:38:14.9387680Z       }
2026-06-21T08:38:14.9387906Z     },
2026-06-21T08:38:14.9388336Z     {
2026-06-21T08:38:14.9388607Z       "id": "REQ-CONSENT-3",
2026-06-21T08:38:14.9390783Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T08:38:14.9392530Z       "requiredStages": [
2026-06-21T08:38:14.9392806Z         "doc",
2026-06-21T08:38:14.9393061Z         "impl",
2026-06-21T08:38:14.9393319Z         "unit",
2026-06-21T08:38:14.9393572Z         "int"
2026-06-21T08:38:14.9393810Z       ],
2026-06-21T08:38:14.9394058Z       "stages": {
2026-06-21T08:38:14.9394301Z         "doc": {
2026-06-21T08:38:14.9394554Z           "complete": true,
2026-06-21T08:38:14.9394841Z           "evidence": [
2026-06-21T08:38:14.9395098Z             {
2026-06-21T08:38:14.9395363Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9395651Z               "line": 304
2026-06-21T08:38:14.9395913Z             }
2026-06-21T08:38:14.9396167Z           ]
2026-06-21T08:38:14.9396411Z         },
2026-06-21T08:38:14.9396654Z         "impl": {
2026-06-21T08:38:14.9396920Z           "complete": true,
2026-06-21T08:38:14.9397201Z           "evidence": [
2026-06-21T08:38:14.9397463Z             {
2026-06-21T08:38:14.9397773Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:14.9398102Z               "line": 123
2026-06-21T08:38:14.9398354Z             },
2026-06-21T08:38:14.9398600Z             {
2026-06-21T08:38:14.9398905Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:14.9399283Z               "line": 162
2026-06-21T08:38:14.9399549Z             },
2026-06-21T08:38:14.9399797Z             {
2026-06-21T08:38:14.9400092Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:14.9400208Z               "line": 291
2026-06-21T08:38:14.9400321Z             },
2026-06-21T08:38:14.9400417Z             {
2026-06-21T08:38:14.9400575Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9400688Z               "line": 574
2026-06-21T08:38:14.9400802Z             },
2026-06-21T08:38:14.9400916Z             {
2026-06-21T08:38:14.9401057Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9401167Z               "line": 824
2026-06-21T08:38:14.9401272Z             },
2026-06-21T08:38:14.9401381Z             {
2026-06-21T08:38:14.9401501Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9401639Z               "line": 6965
2026-06-21T08:38:14.9401748Z             }
2026-06-21T08:38:14.9401844Z           ]
2026-06-21T08:38:14.9401958Z         },
2026-06-21T08:38:14.9402058Z         "int": {
2026-06-21T08:38:14.9402178Z           "complete": true,
2026-06-21T08:38:14.9402287Z           "evidence": [
2026-06-21T08:38:14.9402392Z             {
2026-06-21T08:38:14.9402564Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T08:38:14.9402673Z               "line": 16
2026-06-21T08:38:14.9402780Z             }
2026-06-21T08:38:14.9402883Z           ]
2026-06-21T08:38:14.9402979Z         },
2026-06-21T08:38:14.9403075Z         "unit": {
2026-06-21T08:38:14.9403188Z           "complete": true,
2026-06-21T08:38:14.9403298Z           "evidence": [
2026-06-21T08:38:14.9403400Z             {
2026-06-21T08:38:14.9403550Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:14.9403669Z               "line": 1019
2026-06-21T08:38:14.9403775Z             },
2026-06-21T08:38:14.9403993Z             {
2026-06-21T08:38:14.9404146Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:14.9404366Z               "line": 1066
2026-06-21T08:38:14.9404470Z             },
2026-06-21T08:38:14.9404575Z             {
2026-06-21T08:38:14.9404719Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9404847Z               "line": 1394
2026-06-21T08:38:14.9404947Z             }
2026-06-21T08:38:14.9405048Z           ]
2026-06-21T08:38:14.9405152Z         }
2026-06-21T08:38:14.9405257Z       }
2026-06-21T08:38:14.9405363Z     },
2026-06-21T08:38:14.9405462Z     {
2026-06-21T08:38:14.9405605Z       "id": "REQ-CONV-1",
2026-06-21T08:38:14.9407018Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T08:38:14.9407165Z       "requiredStages": [
2026-06-21T08:38:14.9407271Z         "impl",
2026-06-21T08:38:14.9407381Z         "unit"
2026-06-21T08:38:14.9407485Z       ],
2026-06-21T08:38:14.9407591Z       "stages": {
2026-06-21T08:38:14.9407700Z         "doc": {
2026-06-21T08:38:14.9407819Z           "complete": false,
2026-06-21T08:38:14.9407930Z           "evidence": []
2026-06-21T08:38:14.9408043Z         },
2026-06-21T08:38:14.9408143Z         "impl": {
2026-06-21T08:38:14.9408254Z           "complete": true,
2026-06-21T08:38:14.9408362Z           "evidence": [
2026-06-21T08:38:14.9408473Z             {
2026-06-21T08:38:14.9408620Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9408729Z               "line": 988
2026-06-21T08:38:14.9408834Z             },
2026-06-21T08:38:14.9409022Z             {
2026-06-21T08:38:14.9409194Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:14.9409304Z               "line": 94
2026-06-21T08:38:14.9409413Z             },
2026-06-21T08:38:14.9409533Z             {
2026-06-21T08:38:14.9409684Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:14.9409800Z               "line": 345
2026-06-21T08:38:14.9409904Z             },
2026-06-21T08:38:14.9410008Z             {
2026-06-21T08:38:14.9410167Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:14.9410272Z               "line": 387
2026-06-21T08:38:14.9410376Z             },
2026-06-21T08:38:14.9410482Z             {
2026-06-21T08:38:14.9410628Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:14.9410744Z               "line": 472
2026-06-21T08:38:14.9410844Z             },
2026-06-21T08:38:14.9410948Z             {
2026-06-21T08:38:14.9411093Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9411219Z               "line": 667
2026-06-21T08:38:14.9411323Z             },
2026-06-21T08:38:14.9411434Z             {
2026-06-21T08:38:14.9411593Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9411708Z               "line": 693
2026-06-21T08:38:14.9411814Z             },
2026-06-21T08:38:14.9411917Z             {
2026-06-21T08:38:14.9412062Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:14.9412171Z               "line": 369
2026-06-21T08:38:14.9412280Z             },
2026-06-21T08:38:14.9412376Z             {
2026-06-21T08:38:14.9412537Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T08:38:14.9412652Z               "line": 19
2026-06-21T08:38:14.9412757Z             }
2026-06-21T08:38:14.9412866Z           ]
2026-06-21T08:38:14.9412977Z         },
2026-06-21T08:38:14.9413086Z         "int": {
2026-06-21T08:38:14.9413195Z           "complete": false,
2026-06-21T08:38:14.9413306Z           "evidence": []
2026-06-21T08:38:14.9413534Z         },
2026-06-21T08:38:14.9413645Z         "unit": {
2026-06-21T08:38:14.9413762Z           "complete": true,
2026-06-21T08:38:14.9413965Z           "evidence": [
2026-06-21T08:38:14.9414077Z             {
2026-06-21T08:38:14.9414239Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9414344Z               "line": 1263
2026-06-21T08:38:14.9414453Z             },
2026-06-21T08:38:14.9414558Z             {
2026-06-21T08:38:14.9414702Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T08:38:14.9414820Z               "line": 108
2026-06-21T08:38:14.9414927Z             },
2026-06-21T08:38:14.9415031Z             {
2026-06-21T08:38:14.9415188Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T08:38:14.9415307Z               "line": 134
2026-06-21T08:38:14.9415407Z             },
2026-06-21T08:38:14.9415507Z             {
2026-06-21T08:38:14.9415655Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T08:38:14.9415784Z               "line": 144
2026-06-21T08:38:14.9415885Z             }
2026-06-21T08:38:14.9415989Z           ]
2026-06-21T08:38:14.9416084Z         }
2026-06-21T08:38:14.9416190Z       }
2026-06-21T08:38:14.9416294Z     },
2026-06-21T08:38:14.9416397Z     {
2026-06-21T08:38:14.9416522Z       "id": "REQ-CONV-2",
2026-06-21T08:38:14.9417668Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T08:38:14.9417794Z       "requiredStages": [
2026-06-21T08:38:14.9417898Z         "impl",
2026-06-21T08:38:14.9418002Z         "unit"
2026-06-21T08:38:14.9418108Z       ],
2026-06-21T08:38:14.9418207Z       "stages": {
2026-06-21T08:38:14.9418322Z         "doc": {
2026-06-21T08:38:14.9418451Z           "complete": false,
2026-06-21T08:38:14.9418565Z           "evidence": []
2026-06-21T08:38:14.9418674Z         },
2026-06-21T08:38:14.9418781Z         "impl": {
2026-06-21T08:38:14.9418908Z           "complete": true,
2026-06-21T08:38:14.9419157Z           "evidence": [
2026-06-21T08:38:14.9419265Z             {
2026-06-21T08:38:14.9419427Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9419539Z               "line": 409
2026-06-21T08:38:14.9419639Z             },
2026-06-21T08:38:14.9419734Z             {
2026-06-21T08:38:14.9419901Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:14.9420016Z               "line": 119
2026-06-21T08:38:14.9420112Z             },
2026-06-21T08:38:14.9420216Z             {
2026-06-21T08:38:14.9420379Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:14.9420503Z               "line": 841
2026-06-21T08:38:14.9420607Z             },
2026-06-21T08:38:14.9420703Z             {
2026-06-21T08:38:14.9420874Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:14.9420994Z               "line": 852
2026-06-21T08:38:14.9421098Z             },
2026-06-21T08:38:14.9421203Z             {
2026-06-21T08:38:14.9421362Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:14.9421460Z               "line": 334
2026-06-21T08:38:14.9421576Z             },
2026-06-21T08:38:14.9421677Z             {
2026-06-21T08:38:14.9421812Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9421937Z               "line": 3074
2026-06-21T08:38:14.9422036Z             },
2026-06-21T08:38:14.9422139Z             {
2026-06-21T08:38:14.9422277Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9422388Z               "line": 3090
2026-06-21T08:38:14.9422496Z             },
2026-06-21T08:38:14.9422806Z             {
2026-06-21T08:38:14.9422974Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9423145Z               "line": 3170
2026-06-21T08:38:14.9423412Z             }
2026-06-21T08:38:14.9477277Z           ]
2026-06-21T08:38:14.9477866Z         },
2026-06-21T08:38:14.9478010Z         "int": {
2026-06-21T08:38:14.9478153Z           "complete": false,
2026-06-21T08:38:14.9478268Z           "evidence": []
2026-06-21T08:38:14.9478382Z         },
2026-06-21T08:38:14.9478496Z         "unit": {
2026-06-21T08:38:14.9478630Z           "complete": true,
2026-06-21T08:38:14.9478744Z           "evidence": [
2026-06-21T08:38:14.9478848Z             {
2026-06-21T08:38:14.9479102Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9479222Z               "line": 889
2026-06-21T08:38:14.9479340Z             },
2026-06-21T08:38:14.9479459Z             {
2026-06-21T08:38:14.9479631Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9479744Z               "line": 1014
2026-06-21T08:38:14.9479854Z             },
2026-06-21T08:38:14.9479958Z             {
2026-06-21T08:38:14.9480142Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:14.9480263Z               "line": 215
2026-06-21T08:38:14.9480371Z             }
2026-06-21T08:38:14.9480476Z           ]
2026-06-21T08:38:14.9480577Z         }
2026-06-21T08:38:14.9480682Z       }
2026-06-21T08:38:14.9480791Z     },
2026-06-21T08:38:14.9480887Z     {
2026-06-21T08:38:14.9481010Z       "id": "REQ-DAEMON-1",
2026-06-21T08:38:14.9481211Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T08:38:14.9481335Z       "requiredStages": [
2026-06-21T08:38:14.9481439Z         "impl",
2026-06-21T08:38:14.9481545Z         "unit",
2026-06-21T08:38:14.9481654Z         "int"
2026-06-21T08:38:14.9481749Z       ],
2026-06-21T08:38:14.9481860Z       "stages": {
2026-06-21T08:38:14.9481964Z         "doc": {
2026-06-21T08:38:14.9482094Z           "complete": false,
2026-06-21T08:38:14.9482208Z           "evidence": []
2026-06-21T08:38:14.9482312Z         },
2026-06-21T08:38:14.9482423Z         "impl": {
2026-06-21T08:38:14.9482541Z           "complete": true,
2026-06-21T08:38:14.9482659Z           "evidence": [
2026-06-21T08:38:14.9482768Z             {
2026-06-21T08:38:14.9482933Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9483048Z               "line": 229
2026-06-21T08:38:14.9483148Z             },
2026-06-21T08:38:14.9483257Z             {
2026-06-21T08:38:14.9483411Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:14.9483521Z               "line": 12
2026-06-21T08:38:14.9483619Z             },
2026-06-21T08:38:14.9483726Z             {
2026-06-21T08:38:14.9483882Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9484011Z               "line": 16
2026-06-21T08:38:14.9484116Z             },
2026-06-21T08:38:14.9484216Z             {
2026-06-21T08:38:14.9484374Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9484487Z               "line": 309
2026-06-21T08:38:14.9484598Z             },
2026-06-21T08:38:14.9484699Z             {
2026-06-21T08:38:14.9484850Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9484966Z               "line": 24
2026-06-21T08:38:14.9485066Z             },
2026-06-21T08:38:14.9485173Z             {
2026-06-21T08:38:14.9485321Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9485429Z               "line": 262
2026-06-21T08:38:14.9485533Z             },
2026-06-21T08:38:14.9485638Z             {
2026-06-21T08:38:14.9485795Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9485905Z               "line": 279
2026-06-21T08:38:14.9486015Z             },
2026-06-21T08:38:14.9486120Z             {
2026-06-21T08:38:14.9486268Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9486382Z               "line": 356
2026-06-21T08:38:14.9486487Z             },
2026-06-21T08:38:14.9486598Z             {
2026-06-21T08:38:14.9486749Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9486992Z               "line": 670
2026-06-21T08:38:14.9487097Z             },
2026-06-21T08:38:14.9487307Z             {
2026-06-21T08:38:14.9487450Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T08:38:14.9487556Z               "line": 15
2026-06-21T08:38:14.9487664Z             },
2026-06-21T08:38:14.9487765Z             {
2026-06-21T08:38:14.9487919Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:14.9488026Z               "line": 241
2026-06-21T08:38:14.9488135Z             },
2026-06-21T08:38:14.9488246Z             {
2026-06-21T08:38:14.9488388Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T08:38:14.9488493Z               "line": 13
2026-06-21T08:38:14.9488599Z             },
2026-06-21T08:38:14.9488698Z             {
2026-06-21T08:38:14.9488833Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9489046Z               "line": 382
2026-06-21T08:38:14.9489162Z             },
2026-06-21T08:38:14.9489276Z             {
2026-06-21T08:38:14.9489413Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9489533Z               "line": 494
2026-06-21T08:38:14.9489638Z             }
2026-06-21T08:38:14.9489743Z           ]
2026-06-21T08:38:14.9489848Z         },
2026-06-21T08:38:14.9489952Z         "int": {
2026-06-21T08:38:14.9490062Z           "complete": true,
2026-06-21T08:38:14.9490168Z           "evidence": [
2026-06-21T08:38:14.9490267Z             {
2026-06-21T08:38:14.9490466Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T08:38:14.9490570Z               "line": 2
2026-06-21T08:38:14.9490678Z             },
2026-06-21T08:38:14.9490784Z             {
2026-06-21T08:38:14.9490978Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T08:38:14.9491089Z               "line": 16
2026-06-21T08:38:14.9491189Z             },
2026-06-21T08:38:14.9491293Z             {
2026-06-21T08:38:14.9491466Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T08:38:14.9491589Z               "line": 12
2026-06-21T08:38:14.9491690Z             },
2026-06-21T08:38:14.9491790Z             {
2026-06-21T08:38:14.9491946Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T08:38:14.9492053Z               "line": 12
2026-06-21T08:38:14.9492157Z             },
2026-06-21T08:38:14.9492261Z             {
2026-06-21T08:38:14.9492425Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T08:38:14.9492539Z               "line": 44
2026-06-21T08:38:14.9492639Z             }
2026-06-21T08:38:14.9492744Z           ]
2026-06-21T08:38:14.9492838Z         },
2026-06-21T08:38:14.9492954Z         "unit": {
2026-06-21T08:38:14.9493059Z           "complete": true,
2026-06-21T08:38:14.9493171Z           "evidence": [
2026-06-21T08:38:14.9493281Z             {
2026-06-21T08:38:14.9493432Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:14.9493550Z               "line": 285
2026-06-21T08:38:14.9493655Z             },
2026-06-21T08:38:14.9493771Z             {
2026-06-21T08:38:14.9493922Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:14.9494033Z               "line": 293
2026-06-21T08:38:14.9494142Z             },
2026-06-21T08:38:14.9494247Z             {
2026-06-21T08:38:14.9494400Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:14.9494504Z               "line": 309
2026-06-21T08:38:14.9494605Z             },
2026-06-21T08:38:14.9494709Z             {
2026-06-21T08:38:14.9494857Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:14.9494972Z               "line": 317
2026-06-21T08:38:14.9495076Z             },
2026-06-21T08:38:14.9495181Z             {
2026-06-21T08:38:14.9495330Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9495443Z               "line": 659
2026-06-21T08:38:14.9495550Z             },
2026-06-21T08:38:14.9495762Z             {
2026-06-21T08:38:14.9495919Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9496122Z               "line": 729
2026-06-21T08:38:14.9496227Z             },
2026-06-21T08:38:14.9496332Z             {
2026-06-21T08:38:14.9496484Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9496599Z               "line": 1211
2026-06-21T08:38:14.9496703Z             },
2026-06-21T08:38:14.9496809Z             {
2026-06-21T08:38:14.9496957Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9497071Z               "line": 1248
2026-06-21T08:38:14.9497172Z             },
2026-06-21T08:38:14.9497281Z             {
2026-06-21T08:38:14.9497428Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9497539Z               "line": 1271
2026-06-21T08:38:14.9497648Z             },
2026-06-21T08:38:14.9497748Z             {
2026-06-21T08:38:14.9497900Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9498010Z               "line": 1300
2026-06-21T08:38:14.9498121Z             },
2026-06-21T08:38:14.9498225Z             {
2026-06-21T08:38:14.9498368Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9498489Z               "line": 1348
2026-06-21T08:38:14.9498596Z             },
2026-06-21T08:38:14.9498700Z             {
2026-06-21T08:38:14.9498850Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9499029Z               "line": 1391
2026-06-21T08:38:14.9499135Z             },
2026-06-21T08:38:14.9499239Z             {
2026-06-21T08:38:14.9499398Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T08:38:14.9499502Z               "line": 106
2026-06-21T08:38:14.9499606Z             },
2026-06-21T08:38:14.9499712Z             {
2026-06-21T08:38:14.9499855Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T08:38:14.9499968Z               "line": 132
2026-06-21T08:38:14.9500103Z             },
2026-06-21T08:38:14.9500217Z             {
2026-06-21T08:38:14.9500352Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:14.9500470Z               "line": 530
2026-06-21T08:38:14.9500575Z             }
2026-06-21T08:38:14.9500676Z           ]
2026-06-21T08:38:14.9500775Z         }
2026-06-21T08:38:14.9500879Z       }
2026-06-21T08:38:14.9500983Z     },
2026-06-21T08:38:14.9501083Z     {
2026-06-21T08:38:14.9501210Z       "id": "REQ-DAEMON-2",
2026-06-21T08:38:14.9501383Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T08:38:14.9501506Z       "requiredStages": [
2026-06-21T08:38:14.9501610Z         "impl",
2026-06-21T08:38:14.9501712Z         "unit",
2026-06-21T08:38:14.9501820Z         "int"
2026-06-21T08:38:14.9501911Z       ],
2026-06-21T08:38:14.9502017Z       "stages": {
2026-06-21T08:38:14.9502111Z         "doc": {
2026-06-21T08:38:14.9502226Z           "complete": true,
2026-06-21T08:38:14.9502341Z           "evidence": [
2026-06-21T08:38:14.9502450Z             {
2026-06-21T08:38:14.9502651Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T08:38:14.9502765Z               "line": 250
2026-06-21T08:38:14.9502875Z             }
2026-06-21T08:38:14.9502985Z           ]
2026-06-21T08:38:14.9503084Z         },
2026-06-21T08:38:14.9503190Z         "impl": {
2026-06-21T08:38:14.9503304Z           "complete": true,
2026-06-21T08:38:14.9503423Z           "evidence": [
2026-06-21T08:38:14.9503528Z             {
2026-06-21T08:38:14.9503680Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9503793Z               "line": 23
2026-06-21T08:38:14.9503889Z             },
2026-06-21T08:38:14.9503997Z             {
2026-06-21T08:38:14.9504134Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9504255Z               "line": 844
2026-06-21T08:38:14.9504354Z             },
2026-06-21T08:38:14.9504464Z             {
2026-06-21T08:38:14.9504607Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9504827Z               "line": 869
2026-06-21T08:38:14.9504927Z             },
2026-06-21T08:38:14.9505031Z             {
2026-06-21T08:38:14.9505274Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9505388Z               "line": 1105
2026-06-21T08:38:14.9505490Z             },
2026-06-21T08:38:14.9505603Z             {
2026-06-21T08:38:14.9505742Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9505862Z               "line": 32
2026-06-21T08:38:14.9505960Z             },
2026-06-21T08:38:14.9506066Z             {
2026-06-21T08:38:14.9506214Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9506332Z               "line": 1150
2026-06-21T08:38:14.9506432Z             },
2026-06-21T08:38:14.9506531Z             {
2026-06-21T08:38:14.9506682Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9506797Z               "line": 1947
2026-06-21T08:38:14.9506907Z             },
2026-06-21T08:38:14.9507016Z             {
2026-06-21T08:38:14.9507169Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9507292Z               "line": 2234
2026-06-21T08:38:14.9507393Z             },
2026-06-21T08:38:14.9507502Z             {
2026-06-21T08:38:14.9507650Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T08:38:14.9507761Z               "line": 11
2026-06-21T08:38:14.9507865Z             },
2026-06-21T08:38:14.9507974Z             {
2026-06-21T08:38:14.9508127Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9508236Z               "line": 153
2026-06-21T08:38:14.9508347Z             },
2026-06-21T08:38:14.9508442Z             {
2026-06-21T08:38:14.9508590Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9508691Z               "line": 343
2026-06-21T08:38:14.9508799Z             },
2026-06-21T08:38:14.9508909Z             {
2026-06-21T08:38:14.9509128Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9509255Z               "line": 13
2026-06-21T08:38:14.9509362Z             },
2026-06-21T08:38:14.9509466Z             {
2026-06-21T08:38:14.9509619Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9509733Z               "line": 27
2026-06-21T08:38:14.9509837Z             },
2026-06-21T08:38:14.9509938Z             {
2026-06-21T08:38:14.9510087Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9510190Z               "line": 173
2026-06-21T08:38:14.9510297Z             },
2026-06-21T08:38:14.9510396Z             {
2026-06-21T08:38:14.9510553Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9510673Z               "line": 682
2026-06-21T08:38:14.9510763Z             },
2026-06-21T08:38:14.9510873Z             {
2026-06-21T08:38:14.9511016Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9511139Z               "line": 903
2026-06-21T08:38:14.9511241Z             },
2026-06-21T08:38:14.9511349Z             {
2026-06-21T08:38:14.9511486Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9511606Z               "line": 1050
2026-06-21T08:38:14.9511708Z             },
2026-06-21T08:38:14.9511808Z             {
2026-06-21T08:38:14.9511957Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9512071Z               "line": 1139
2026-06-21T08:38:14.9512175Z             },
2026-06-21T08:38:14.9512277Z             {
2026-06-21T08:38:14.9512414Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9512525Z               "line": 1261
2026-06-21T08:38:14.9512624Z             },
2026-06-21T08:38:14.9512733Z             {
2026-06-21T08:38:14.9512887Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T08:38:14.9512991Z               "line": 10
2026-06-21T08:38:14.9513101Z             }
2026-06-21T08:38:14.9513201Z           ]
2026-06-21T08:38:14.9513306Z         },
2026-06-21T08:38:14.9513415Z         "int": {
2026-06-21T08:38:14.9513664Z           "complete": true,
2026-06-21T08:38:14.9513784Z           "evidence": [
2026-06-21T08:38:14.9513968Z             {
2026-06-21T08:38:14.9514132Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:14.9514240Z               "line": 17
2026-06-21T08:38:14.9514339Z             },
2026-06-21T08:38:14.9514440Z             {
2026-06-21T08:38:14.9514604Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T08:38:14.9514709Z               "line": 90
2026-06-21T08:38:14.9514810Z             },
2026-06-21T08:38:14.9514919Z             {
2026-06-21T08:38:14.9515077Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T08:38:14.9515182Z               "line": 110
2026-06-21T08:38:14.9515286Z             },
2026-06-21T08:38:14.9515397Z             {
2026-06-21T08:38:14.9515553Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T08:38:14.9515672Z               "line": 186
2026-06-21T08:38:14.9515787Z             },
2026-06-21T08:38:14.9515892Z             {
2026-06-21T08:38:14.9516055Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T08:38:14.9516173Z               "line": 309
2026-06-21T08:38:14.9516287Z             },
2026-06-21T08:38:14.9516398Z             {
2026-06-21T08:38:14.9516540Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T08:38:14.9516656Z               "line": 128
2026-06-21T08:38:14.9516751Z             },
2026-06-21T08:38:14.9516854Z             {
2026-06-21T08:38:14.9516997Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T08:38:14.9517101Z               "line": 59
2026-06-21T08:38:14.9517208Z             }
2026-06-21T08:38:14.9517314Z           ]
2026-06-21T08:38:14.9517420Z         },
2026-06-21T08:38:14.9517518Z         "unit": {
2026-06-21T08:38:14.9517629Z           "complete": true,
2026-06-21T08:38:14.9517738Z           "evidence": [
2026-06-21T08:38:14.9517857Z             {
2026-06-21T08:38:14.9518015Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T08:38:14.9518120Z               "line": 62
2026-06-21T08:38:14.9518234Z             },
2026-06-21T08:38:14.9518340Z             {
2026-06-21T08:38:14.9518486Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T08:38:14.9518602Z               "line": 76
2026-06-21T08:38:14.9518706Z             },
2026-06-21T08:38:14.9518811Z             {
2026-06-21T08:38:14.9519016Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T08:38:14.9519135Z               "line": 88
2026-06-21T08:38:14.9519232Z             },
2026-06-21T08:38:14.9519355Z             {
2026-06-21T08:38:14.9519503Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:14.9519618Z               "line": 347
2026-06-21T08:38:14.9519725Z             },
2026-06-21T08:38:14.9519825Z             {
2026-06-21T08:38:14.9519965Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9520073Z               "line": 873
2026-06-21T08:38:14.9520184Z             },
2026-06-21T08:38:14.9520293Z             {
2026-06-21T08:38:14.9520431Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9520552Z               "line": 881
2026-06-21T08:38:14.9520652Z             },
2026-06-21T08:38:14.9520755Z             {
2026-06-21T08:38:14.9520890Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9521008Z               "line": 898
2026-06-21T08:38:14.9521113Z             },
2026-06-21T08:38:14.9521214Z             {
2026-06-21T08:38:14.9521356Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9521458Z               "line": 974
2026-06-21T08:38:14.9521566Z             },
2026-06-21T08:38:14.9521671Z             {
2026-06-21T08:38:14.9521820Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9521942Z               "line": 1370
2026-06-21T08:38:14.9522037Z             },
2026-06-21T08:38:14.9522147Z             {
2026-06-21T08:38:14.9522292Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9522522Z               "line": 1382
2026-06-21T08:38:14.9522707Z             },
2026-06-21T08:38:14.9522808Z             {
2026-06-21T08:38:14.9522964Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T08:38:14.9523080Z               "line": 110
2026-06-21T08:38:14.9523180Z             },
2026-06-21T08:38:14.9523284Z             {
2026-06-21T08:38:14.9523433Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T08:38:14.9523547Z               "line": 145
2026-06-21T08:38:14.9523651Z             }
2026-06-21T08:38:14.9523767Z           ]
2026-06-21T08:38:14.9523866Z         }
2026-06-21T08:38:14.9523966Z       }
2026-06-21T08:38:14.9524068Z     },
2026-06-21T08:38:14.9524166Z     {
2026-06-21T08:38:14.9524285Z       "id": "REQ-DAEMON-3",
2026-06-21T08:38:14.9524480Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T08:38:14.9524605Z       "requiredStages": [
2026-06-21T08:38:14.9524721Z         "impl",
2026-06-21T08:38:14.9524829Z         "unit",
2026-06-21T08:38:14.9524932Z         "int"
2026-06-21T08:38:14.9525043Z       ],
2026-06-21T08:38:14.9525150Z       "stages": {
2026-06-21T08:38:14.9525264Z         "doc": {
2026-06-21T08:38:14.9525380Z           "complete": false,
2026-06-21T08:38:14.9525484Z           "evidence": []
2026-06-21T08:38:14.9525598Z         },
2026-06-21T08:38:14.9525699Z         "impl": {
2026-06-21T08:38:14.9525817Z           "complete": true,
2026-06-21T08:38:14.9525927Z           "evidence": [
2026-06-21T08:38:14.9526037Z             {
2026-06-21T08:38:14.9526198Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9526309Z               "line": 14
2026-06-21T08:38:14.9526418Z             },
2026-06-21T08:38:14.9526523Z             {
2026-06-21T08:38:14.9526676Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T08:38:14.9526785Z               "line": 11
2026-06-21T08:38:14.9526891Z             },
2026-06-21T08:38:14.9526996Z             {
2026-06-21T08:38:14.9527129Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:14.9527254Z               "line": 305
2026-06-21T08:38:14.9527362Z             },
2026-06-21T08:38:14.9527471Z             {
2026-06-21T08:38:14.9527604Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9527717Z               "line": 1956
2026-06-21T08:38:14.9527826Z             },
2026-06-21T08:38:14.9527927Z             {
2026-06-21T08:38:14.9528060Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9528160Z               "line": 4235
2026-06-21T08:38:14.9528276Z             },
2026-06-21T08:38:14.9528370Z             {
2026-06-21T08:38:14.9528504Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9528618Z               "line": 4256
2026-06-21T08:38:14.9528723Z             }
2026-06-21T08:38:14.9528829Z           ]
2026-06-21T08:38:14.9528928Z         },
2026-06-21T08:38:14.9529109Z         "int": {
2026-06-21T08:38:14.9529233Z           "complete": true,
2026-06-21T08:38:14.9529366Z           "evidence": [
2026-06-21T08:38:14.9529473Z             {
2026-06-21T08:38:14.9529628Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:14.9529744Z               "line": 49
2026-06-21T08:38:14.9529849Z             },
2026-06-21T08:38:14.9529952Z             {
2026-06-21T08:38:14.9530107Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:14.9530220Z               "line": 487
2026-06-21T08:38:14.9530324Z             }
2026-06-21T08:38:14.9530424Z           ]
2026-06-21T08:38:14.9530530Z         },
2026-06-21T08:38:14.9530638Z         "unit": {
2026-06-21T08:38:14.9530754Z           "complete": true,
2026-06-21T08:38:14.9530863Z           "evidence": [
2026-06-21T08:38:14.9530967Z             {
2026-06-21T08:38:14.9531121Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9531231Z               "line": 1553
2026-06-21T08:38:14.9531325Z             },
2026-06-21T08:38:14.9531530Z             {
2026-06-21T08:38:14.9531659Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9531874Z               "line": 10715
2026-06-21T08:38:14.9531969Z             }
2026-06-21T08:38:14.9532070Z           ]
2026-06-21T08:38:14.9532164Z         }
2026-06-21T08:38:14.9532269Z       }
2026-06-21T08:38:14.9532366Z     },
2026-06-21T08:38:14.9532474Z     {
2026-06-21T08:38:14.9532588Z       "id": "REQ-DAEMON-4",
2026-06-21T08:38:14.9532736Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T08:38:14.9532848Z       "requiredStages": [
2026-06-21T08:38:14.9532957Z         "impl",
2026-06-21T08:38:14.9533063Z         "unit",
2026-06-21T08:38:14.9533167Z         "int"
2026-06-21T08:38:14.9533272Z       ],
2026-06-21T08:38:14.9533377Z       "stages": {
2026-06-21T08:38:14.9533482Z         "doc": {
2026-06-21T08:38:14.9533596Z           "complete": false,
2026-06-21T08:38:14.9533702Z           "evidence": []
2026-06-21T08:38:14.9533811Z         },
2026-06-21T08:38:14.9533931Z         "impl": {
2026-06-21T08:38:14.9534054Z           "complete": true,
2026-06-21T08:38:14.9534163Z           "evidence": [
2026-06-21T08:38:14.9534274Z             {
2026-06-21T08:38:14.9534436Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9534550Z               "line": 464
2026-06-21T08:38:14.9534660Z             },
2026-06-21T08:38:14.9534765Z             {
2026-06-21T08:38:14.9534913Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9535031Z               "line": 529
2026-06-21T08:38:14.9535137Z             },
2026-06-21T08:38:14.9535243Z             {
2026-06-21T08:38:14.9535389Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9535517Z               "line": 551
2026-06-21T08:38:14.9535603Z             }
2026-06-21T08:38:14.9535710Z           ]
2026-06-21T08:38:14.9535814Z         },
2026-06-21T08:38:14.9535906Z         "int": {
2026-06-21T08:38:14.9536029Z           "complete": true,
2026-06-21T08:38:14.9536144Z           "evidence": [
2026-06-21T08:38:14.9536254Z             {
2026-06-21T08:38:14.9536406Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T08:38:14.9536536Z               "line": 42
2026-06-21T08:38:14.9536645Z             }
2026-06-21T08:38:14.9536749Z           ]
2026-06-21T08:38:14.9536860Z         },
2026-06-21T08:38:14.9536955Z         "unit": {
2026-06-21T08:38:14.9537078Z           "complete": true,
2026-06-21T08:38:14.9537194Z           "evidence": [
2026-06-21T08:38:14.9537298Z             {
2026-06-21T08:38:14.9537461Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:14.9537575Z               "line": 428
2026-06-21T08:38:14.9537694Z             },
2026-06-21T08:38:14.9537795Z             {
2026-06-21T08:38:14.9537951Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9538055Z               "line": 957
2026-06-21T08:38:14.9538169Z             },
2026-06-21T08:38:14.9538282Z             {
2026-06-21T08:38:14.9538439Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9538559Z               "line": 1027
2026-06-21T08:38:14.9538667Z             },
2026-06-21T08:38:14.9538769Z             {
2026-06-21T08:38:14.9538921Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9539126Z               "line": 1057
2026-06-21T08:38:14.9539245Z             },
2026-06-21T08:38:14.9539345Z             {
2026-06-21T08:38:14.9539498Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9539612Z               "line": 1090
2026-06-21T08:38:14.9539718Z             }
2026-06-21T08:38:14.9539822Z           ]
2026-06-21T08:38:14.9539927Z         }
2026-06-21T08:38:14.9540038Z       }
2026-06-21T08:38:14.9540136Z     },
2026-06-21T08:38:14.9540237Z     {
2026-06-21T08:38:14.9540357Z       "id": "REQ-DAEMON-5",
2026-06-21T08:38:14.9541880Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T08:38:14.9542224Z       "requiredStages": [
2026-06-21T08:38:14.9542334Z         "impl",
2026-06-21T08:38:14.9542439Z         "unit"
2026-06-21T08:38:14.9542544Z       ],
2026-06-21T08:38:14.9542654Z       "stages": {
2026-06-21T08:38:14.9542762Z         "doc": {
2026-06-21T08:38:14.9542887Z           "complete": false,
2026-06-21T08:38:14.9542997Z           "evidence": []
2026-06-21T08:38:14.9543100Z         },
2026-06-21T08:38:14.9543210Z         "impl": {
2026-06-21T08:38:14.9543324Z           "complete": true,
2026-06-21T08:38:14.9543436Z           "evidence": [
2026-06-21T08:38:14.9543542Z             {
2026-06-21T08:38:14.9543709Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9543832Z               "line": 476
2026-06-21T08:38:14.9543933Z             },
2026-06-21T08:38:14.9544047Z             {
2026-06-21T08:38:14.9544205Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9544319Z               "line": 769
2026-06-21T08:38:14.9544418Z             },
2026-06-21T08:38:14.9544520Z             {
2026-06-21T08:38:14.9544667Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9544776Z               "line": 782
2026-06-21T08:38:14.9544887Z             },
2026-06-21T08:38:14.9544987Z             {
2026-06-21T08:38:14.9545144Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9545249Z               "line": 800
2026-06-21T08:38:14.9545362Z             },
2026-06-21T08:38:14.9545473Z             {
2026-06-21T08:38:14.9545624Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9545740Z               "line": 841
2026-06-21T08:38:14.9545855Z             }
2026-06-21T08:38:14.9545967Z           ]
2026-06-21T08:38:14.9546067Z         },
2026-06-21T08:38:14.9546177Z         "int": {
2026-06-21T08:38:14.9546313Z           "complete": false,
2026-06-21T08:38:14.9546427Z           "evidence": []
2026-06-21T08:38:14.9546538Z         },
2026-06-21T08:38:14.9546632Z         "unit": {
2026-06-21T08:38:14.9546752Z           "complete": true,
2026-06-21T08:38:14.9546867Z           "evidence": [
2026-06-21T08:38:14.9546976Z             {
2026-06-21T08:38:14.9547134Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9547243Z               "line": 1189
2026-06-21T08:38:14.9547348Z             },
2026-06-21T08:38:14.9547449Z             {
2026-06-21T08:38:14.9547605Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9547726Z               "line": 1213
2026-06-21T08:38:14.9547829Z             },
2026-06-21T08:38:14.9547939Z             {
2026-06-21T08:38:14.9548083Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:14.9548215Z               "line": 1239
2026-06-21T08:38:14.9548317Z             }
2026-06-21T08:38:14.9548421Z           ]
2026-06-21T08:38:14.9548530Z         }
2026-06-21T08:38:14.9548634Z       }
2026-06-21T08:38:14.9548739Z     },
2026-06-21T08:38:14.9548842Z     {
2026-06-21T08:38:14.9549042Z       "id": "REQ-DAEMON-6",
2026-06-21T08:38:14.9551092Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T08:38:14.9551345Z       "requiredStages": [
2026-06-21T08:38:14.9551453Z         "impl",
2026-06-21T08:38:14.9551645Z         "unit"
2026-06-21T08:38:14.9551749Z       ],
2026-06-21T08:38:14.9551864Z       "stages": {
2026-06-21T08:38:14.9551969Z         "doc": {
2026-06-21T08:38:14.9552088Z           "complete": false,
2026-06-21T08:38:14.9552189Z           "evidence": []
2026-06-21T08:38:14.9552298Z         },
2026-06-21T08:38:14.9552407Z         "impl": {
2026-06-21T08:38:14.9552528Z           "complete": true,
2026-06-21T08:38:14.9552632Z           "evidence": [
2026-06-21T08:38:14.9552736Z             {
2026-06-21T08:38:14.9552890Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9553004Z               "line": 495
2026-06-21T08:38:14.9553113Z             },
2026-06-21T08:38:14.9553209Z             {
2026-06-21T08:38:14.9553366Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9553477Z               "line": 526
2026-06-21T08:38:14.9553590Z             },
2026-06-21T08:38:14.9553694Z             {
2026-06-21T08:38:14.9553846Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9553963Z               "line": 55
2026-06-21T08:38:14.9554068Z             },
2026-06-21T08:38:14.9554174Z             {
2026-06-21T08:38:14.9554325Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9554436Z               "line": 70
2026-06-21T08:38:14.9554540Z             },
2026-06-21T08:38:14.9554644Z             {
2026-06-21T08:38:14.9554789Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9554889Z               "line": 2020
2026-06-21T08:38:14.9554997Z             },
2026-06-21T08:38:14.9555108Z             {
2026-06-21T08:38:14.9555232Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9555355Z               "line": 2046
2026-06-21T08:38:14.9555457Z             }
2026-06-21T08:38:14.9555561Z           ]
2026-06-21T08:38:14.9555651Z         },
2026-06-21T08:38:14.9555772Z         "int": {
2026-06-21T08:38:14.9555895Z           "complete": false,
2026-06-21T08:38:14.9555995Z           "evidence": []
2026-06-21T08:38:14.9556110Z         },
2026-06-21T08:38:14.9556214Z         "unit": {
2026-06-21T08:38:14.9556339Z           "complete": true,
2026-06-21T08:38:14.9556453Z           "evidence": [
2026-06-21T08:38:14.9556551Z             {
2026-06-21T08:38:14.9556699Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9556812Z               "line": 288
2026-06-21T08:38:14.9556916Z             },
2026-06-21T08:38:14.9557021Z             {
2026-06-21T08:38:14.9557178Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9557283Z               "line": 299
2026-06-21T08:38:14.9557393Z             },
2026-06-21T08:38:14.9557493Z             {
2026-06-21T08:38:14.9557647Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9557771Z               "line": 325
2026-06-21T08:38:14.9557874Z             },
2026-06-21T08:38:14.9557995Z             {
2026-06-21T08:38:14.9558132Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9558262Z               "line": 351
2026-06-21T08:38:14.9558371Z             }
2026-06-21T08:38:14.9558475Z           ]
2026-06-21T08:38:14.9558577Z         }
2026-06-21T08:38:14.9558681Z       }
2026-06-21T08:38:14.9558790Z     },
2026-06-21T08:38:14.9558892Z     {
2026-06-21T08:38:14.9559464Z       "id": "REQ-DAEMON-7",
2026-06-21T08:38:14.9566397Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T08:38:14.9566575Z       "requiredStages": [
2026-06-21T08:38:14.9566846Z         "impl",
2026-06-21T08:38:14.9566942Z         "unit"
2026-06-21T08:38:14.9567140Z       ],
2026-06-21T08:38:14.9567250Z       "stages": {
2026-06-21T08:38:14.9567358Z         "doc": {
2026-06-21T08:38:14.9567481Z           "complete": false,
2026-06-21T08:38:14.9567596Z           "evidence": []
2026-06-21T08:38:14.9567706Z         },
2026-06-21T08:38:14.9567810Z         "impl": {
2026-06-21T08:38:14.9567935Z           "complete": true,
2026-06-21T08:38:14.9568039Z           "evidence": [
2026-06-21T08:38:14.9568144Z             {
2026-06-21T08:38:14.9568306Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9568410Z               "line": 545
2026-06-21T08:38:14.9568516Z             },
2026-06-21T08:38:14.9568616Z             {
2026-06-21T08:38:14.9568769Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:14.9568884Z               "line": 610
2026-06-21T08:38:14.9569069Z             },
2026-06-21T08:38:14.9569180Z             {
2026-06-21T08:38:14.9569346Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9569466Z               "line": 89
2026-06-21T08:38:14.9569570Z             },
2026-06-21T08:38:14.9569674Z             {
2026-06-21T08:38:14.9569816Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9569925Z               "line": 1957
2026-06-21T08:38:14.9570033Z             }
2026-06-21T08:38:14.9570134Z           ]
2026-06-21T08:38:14.9570239Z         },
2026-06-21T08:38:14.9570348Z         "int": {
2026-06-21T08:38:14.9570469Z           "complete": false,
2026-06-21T08:38:14.9570587Z           "evidence": []
2026-06-21T08:38:14.9570677Z         },
2026-06-21T08:38:14.9570788Z         "unit": {
2026-06-21T08:38:14.9570893Z           "complete": true,
2026-06-21T08:38:14.9571001Z           "evidence": [
2026-06-21T08:38:14.9571103Z             {
2026-06-21T08:38:14.9571254Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9571369Z               "line": 314
2026-06-21T08:38:14.9571478Z             },
2026-06-21T08:38:14.9571583Z             {
2026-06-21T08:38:14.9571713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9571831Z               "line": 8102
2026-06-21T08:38:14.9571936Z             }
2026-06-21T08:38:14.9572037Z           ]
2026-06-21T08:38:14.9572145Z         }
2026-06-21T08:38:14.9572241Z       }
2026-06-21T08:38:14.9572347Z     },
2026-06-21T08:38:14.9572447Z     {
2026-06-21T08:38:14.9572569Z       "id": "REQ-DAEMON-8",
2026-06-21T08:38:14.9573604Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T08:38:14.9573733Z       "requiredStages": [
2026-06-21T08:38:14.9573842Z         "impl",
2026-06-21T08:38:14.9573943Z         "unit"
2026-06-21T08:38:14.9574052Z       ],
2026-06-21T08:38:14.9574162Z       "stages": {
2026-06-21T08:38:14.9574268Z         "doc": {
2026-06-21T08:38:14.9574381Z           "complete": false,
2026-06-21T08:38:14.9574491Z           "evidence": []
2026-06-21T08:38:14.9574602Z         },
2026-06-21T08:38:14.9574705Z         "impl": {
2026-06-21T08:38:14.9574828Z           "complete": true,
2026-06-21T08:38:14.9574938Z           "evidence": [
2026-06-21T08:38:14.9575046Z             {
2026-06-21T08:38:14.9575202Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9575309Z               "line": 445
2026-06-21T08:38:14.9575418Z             },
2026-06-21T08:38:14.9575513Z             {
2026-06-21T08:38:14.9575666Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9575779Z               "line": 56
2026-06-21T08:38:14.9575886Z             }
2026-06-21T08:38:14.9575999Z           ]
2026-06-21T08:38:14.9576099Z         },
2026-06-21T08:38:14.9576201Z         "int": {
2026-06-21T08:38:14.9576428Z           "complete": false,
2026-06-21T08:38:14.9576539Z           "evidence": []
2026-06-21T08:38:14.9576729Z         },
2026-06-21T08:38:14.9576840Z         "unit": {
2026-06-21T08:38:14.9576962Z           "complete": true,
2026-06-21T08:38:14.9577071Z           "evidence": [
2026-06-21T08:38:14.9577178Z             {
2026-06-21T08:38:14.9577324Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9577449Z               "line": 288
2026-06-21T08:38:14.9577554Z             },
2026-06-21T08:38:14.9577653Z             {
2026-06-21T08:38:14.9577801Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T08:38:14.9577909Z               "line": 325
2026-06-21T08:38:14.9578012Z             }
2026-06-21T08:38:14.9578108Z           ]
2026-06-21T08:38:14.9578204Z         }
2026-06-21T08:38:14.9578308Z       }
2026-06-21T08:38:14.9578418Z     },
2026-06-21T08:38:14.9578547Z     {
2026-06-21T08:38:14.9578660Z       "id": "REQ-DAEMON-9",
2026-06-21T08:38:14.9581152Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T08:38:14.9581295Z       "requiredStages": [
2026-06-21T08:38:14.9581400Z         "impl",
2026-06-21T08:38:14.9581499Z         "unit"
2026-06-21T08:38:14.9581605Z       ],
2026-06-21T08:38:14.9581705Z       "stages": {
2026-06-21T08:38:14.9581810Z         "doc": {
2026-06-21T08:38:14.9581919Z           "complete": false,
2026-06-21T08:38:14.9582044Z           "evidence": []
2026-06-21T08:38:14.9582143Z         },
2026-06-21T08:38:14.9582259Z         "impl": {
2026-06-21T08:38:14.9582377Z           "complete": true,
2026-06-21T08:38:14.9582486Z           "evidence": [
2026-06-21T08:38:14.9582592Z             {
2026-06-21T08:38:14.9582743Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9582859Z               "line": 276
2026-06-21T08:38:14.9582965Z             },
2026-06-21T08:38:14.9583072Z             {
2026-06-21T08:38:14.9583225Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9583336Z               "line": 1201
2026-06-21T08:38:14.9583434Z             },
2026-06-21T08:38:14.9583535Z             {
2026-06-21T08:38:14.9583674Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9583782Z               "line": 197
2026-06-21T08:38:14.9583898Z             },
2026-06-21T08:38:14.9584003Z             {
2026-06-21T08:38:14.9584145Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9584260Z               "line": 344
2026-06-21T08:38:14.9584360Z             },
2026-06-21T08:38:14.9584469Z             {
2026-06-21T08:38:14.9584603Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9584722Z               "line": 381
2026-06-21T08:38:14.9584828Z             },
2026-06-21T08:38:14.9584927Z             {
2026-06-21T08:38:14.9585056Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9585167Z               "line": 2075
2026-06-21T08:38:14.9585274Z             }
2026-06-21T08:38:14.9585374Z           ]
2026-06-21T08:38:14.9585474Z         },
2026-06-21T08:38:14.9585578Z         "int": {
2026-06-21T08:38:14.9585686Z           "complete": false,
2026-06-21T08:38:14.9585806Z           "evidence": []
2026-06-21T08:38:14.9585902Z         },
2026-06-21T08:38:14.9586154Z         "unit": {
2026-06-21T08:38:14.9586268Z           "complete": true,
2026-06-21T08:38:14.9586382Z           "evidence": [
2026-06-21T08:38:14.9586578Z             {
2026-06-21T08:38:14.9586712Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9586831Z               "line": 1158
2026-06-21T08:38:14.9586931Z             },
2026-06-21T08:38:14.9587031Z             {
2026-06-21T08:38:14.9587160Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9587274Z               "line": 10580
2026-06-21T08:38:14.9587370Z             }
2026-06-21T08:38:14.9587470Z           ]
2026-06-21T08:38:14.9587575Z         }
2026-06-21T08:38:14.9587676Z       }
2026-06-21T08:38:14.9587781Z     },
2026-06-21T08:38:14.9587875Z     {
2026-06-21T08:38:14.9587991Z       "id": "REQ-DOCS-1",
2026-06-21T08:38:14.9588218Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T08:38:14.9588327Z       "requiredStages": [
2026-06-21T08:38:14.9588445Z         "doc",
2026-06-21T08:38:14.9588544Z         "impl"
2026-06-21T08:38:14.9588654Z       ],
2026-06-21T08:38:14.9588764Z       "stages": {
2026-06-21T08:38:14.9588868Z         "doc": {
2026-06-21T08:38:14.9589060Z           "complete": true,
2026-06-21T08:38:14.9589169Z           "evidence": [
2026-06-21T08:38:14.9589278Z             {
2026-06-21T08:38:14.9589436Z               "path": "docs-site/src/index.md",
2026-06-21T08:38:14.9589545Z               "line": 50
2026-06-21T08:38:14.9589656Z             }
2026-06-21T08:38:14.9589760Z           ]
2026-06-21T08:38:14.9589864Z         },
2026-06-21T08:38:14.9589966Z         "impl": {
2026-06-21T08:38:14.9590094Z           "complete": true,
2026-06-21T08:38:14.9590194Z           "evidence": [
2026-06-21T08:38:14.9590300Z             {
2026-06-21T08:38:14.9590461Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T08:38:14.9590567Z               "line": 12
2026-06-21T08:38:14.9590672Z             },
2026-06-21T08:38:14.9590779Z             {
2026-06-21T08:38:14.9590923Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:14.9591026Z               "line": 14
2026-06-21T08:38:14.9591134Z             }
2026-06-21T08:38:14.9591235Z           ]
2026-06-21T08:38:14.9591336Z         },
2026-06-21T08:38:14.9591434Z         "int": {
2026-06-21T08:38:14.9591555Z           "complete": false,
2026-06-21T08:38:14.9591674Z           "evidence": []
2026-06-21T08:38:14.9591773Z         },
2026-06-21T08:38:14.9591875Z         "unit": {
2026-06-21T08:38:14.9591988Z           "complete": false,
2026-06-21T08:38:14.9592097Z           "evidence": []
2026-06-21T08:38:14.9592208Z         }
2026-06-21T08:38:14.9592298Z       }
2026-06-21T08:38:14.9592398Z     },
2026-06-21T08:38:14.9592499Z     {
2026-06-21T08:38:14.9592618Z       "id": "REQ-DOCS-2",
2026-06-21T08:38:14.9592799Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T08:38:14.9592919Z       "requiredStages": [
2026-06-21T08:38:14.9593028Z         "doc",
2026-06-21T08:38:14.9593139Z         "int"
2026-06-21T08:38:14.9593243Z       ],
2026-06-21T08:38:14.9593347Z       "stages": {
2026-06-21T08:38:14.9593463Z         "doc": {
2026-06-21T08:38:14.9593577Z           "complete": true,
2026-06-21T08:38:14.9593685Z           "evidence": [
2026-06-21T08:38:14.9593785Z             {
2026-06-21T08:38:14.9593989Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T08:38:14.9594105Z               "line": 3
2026-06-21T08:38:14.9594205Z             },
2026-06-21T08:38:14.9594314Z             {
2026-06-21T08:38:14.9594534Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T08:38:14.9594691Z               "line": 3
2026-06-21T08:38:14.9594843Z             },
2026-06-21T08:38:14.9594986Z             {
2026-06-21T08:38:14.9595235Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T08:38:14.9595344Z               "line": 3
2026-06-21T08:38:14.9595455Z             }
2026-06-21T08:38:14.9595558Z           ]
2026-06-21T08:38:14.9595770Z         },
2026-06-21T08:38:14.9595878Z         "impl": {
2026-06-21T08:38:14.9595996Z           "complete": false,
2026-06-21T08:38:14.9596199Z           "evidence": []
2026-06-21T08:38:14.9596303Z         },
2026-06-21T08:38:14.9596414Z         "int": {
2026-06-21T08:38:14.9596533Z           "complete": true,
2026-06-21T08:38:14.9596643Z           "evidence": [
2026-06-21T08:38:14.9596738Z             {
2026-06-21T08:38:14.9596890Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T08:38:14.9597006Z               "line": 14
2026-06-21T08:38:14.9597105Z             }
2026-06-21T08:38:14.9597210Z           ]
2026-06-21T08:38:14.9597321Z         },
2026-06-21T08:38:14.9597425Z         "unit": {
2026-06-21T08:38:14.9597539Z           "complete": false,
2026-06-21T08:38:14.9597650Z           "evidence": []
2026-06-21T08:38:14.9597753Z         }
2026-06-21T08:38:14.9597854Z       }
2026-06-21T08:38:14.9597955Z     },
2026-06-21T08:38:14.9598054Z     {
2026-06-21T08:38:14.9598173Z       "id": "REQ-DOCS-3",
2026-06-21T08:38:14.9598445Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T08:38:14.9598560Z       "requiredStages": [
2026-06-21T08:38:14.9598670Z         "doc"
2026-06-21T08:38:14.9598768Z       ],
2026-06-21T08:38:14.9598882Z       "stages": {
2026-06-21T08:38:14.9599047Z         "doc": {
2026-06-21T08:38:14.9599161Z           "complete": true,
2026-06-21T08:38:14.9599276Z           "evidence": [
2026-06-21T08:38:14.9599372Z             {
2026-06-21T08:38:14.9599514Z               "path": "docs-site/src/index.md",
2026-06-21T08:38:14.9599620Z               "line": 42
2026-06-21T08:38:14.9599724Z             }
2026-06-21T08:38:14.9599824Z           ]
2026-06-21T08:38:14.9599920Z         },
2026-06-21T08:38:14.9600016Z         "impl": {
2026-06-21T08:38:14.9600134Z           "complete": false,
2026-06-21T08:38:14.9600249Z           "evidence": []
2026-06-21T08:38:14.9600344Z         },
2026-06-21T08:38:14.9600449Z         "int": {
2026-06-21T08:38:14.9600569Z           "complete": false,
2026-06-21T08:38:14.9600697Z           "evidence": []
2026-06-21T08:38:14.9600793Z         },
2026-06-21T08:38:14.9600898Z         "unit": {
2026-06-21T08:38:14.9601006Z           "complete": false,
2026-06-21T08:38:14.9601108Z           "evidence": []
2026-06-21T08:38:14.9601203Z         }
2026-06-21T08:38:14.9601302Z       }
2026-06-21T08:38:14.9601396Z     },
2026-06-21T08:38:14.9601497Z     {
2026-06-21T08:38:14.9601610Z       "id": "REQ-DOCS-4",
2026-06-21T08:38:14.9601843Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T08:38:14.9601953Z       "requiredStages": [
2026-06-21T08:38:14.9602057Z         "doc",
2026-06-21T08:38:14.9602163Z         "impl",
2026-06-21T08:38:14.9602263Z         "unit"
2026-06-21T08:38:14.9602367Z       ],
2026-06-21T08:38:14.9602473Z       "stages": {
2026-06-21T08:38:14.9602577Z         "doc": {
2026-06-21T08:38:14.9602686Z           "complete": true,
2026-06-21T08:38:14.9602802Z           "evidence": [
2026-06-21T08:38:14.9602906Z             {
2026-06-21T08:38:14.9603049Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T08:38:14.9603159Z               "line": 35
2026-06-21T08:38:14.9603255Z             }
2026-06-21T08:38:14.9603359Z           ]
2026-06-21T08:38:14.9603460Z         },
2026-06-21T08:38:14.9603574Z         "impl": {
2026-06-21T08:38:14.9603679Z           "complete": true,
2026-06-21T08:38:14.9603794Z           "evidence": [
2026-06-21T08:38:14.9603893Z             {
2026-06-21T08:38:14.9604038Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9604151Z               "line": 746
2026-06-21T08:38:14.9604250Z             },
2026-06-21T08:38:14.9604355Z             {
2026-06-21T08:38:14.9604489Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:14.9604597Z               "line": 15
2026-06-21T08:38:14.9604703Z             }
2026-06-21T08:38:14.9604794Z           ]
2026-06-21T08:38:14.9604902Z         },
2026-06-21T08:38:14.9605113Z         "int": {
2026-06-21T08:38:14.9605231Z           "complete": false,
2026-06-21T08:38:14.9605441Z           "evidence": []
2026-06-21T08:38:14.9605546Z         },
2026-06-21T08:38:14.9605657Z         "unit": {
2026-06-21T08:38:14.9605775Z           "complete": true,
2026-06-21T08:38:14.9605890Z           "evidence": [
2026-06-21T08:38:14.9605991Z             {
2026-06-21T08:38:14.9606147Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9606253Z               "line": 1682
2026-06-21T08:38:14.9606363Z             }
2026-06-21T08:38:14.9606471Z           ]
2026-06-21T08:38:14.9606571Z         }
2026-06-21T08:38:14.9606675Z       }
2026-06-21T08:38:14.9606773Z     },
2026-06-21T08:38:14.9606873Z     {
2026-06-21T08:38:14.9606989Z       "id": "REQ-DOCS-5",
2026-06-21T08:38:14.9607217Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T08:38:14.9607332Z       "requiredStages": [
2026-06-21T08:38:14.9607431Z         "impl",
2026-06-21T08:38:14.9607546Z         "int"
2026-06-21T08:38:14.9607641Z       ],
2026-06-21T08:38:14.9607760Z       "stages": {
2026-06-21T08:38:14.9607871Z         "doc": {
2026-06-21T08:38:14.9607994Z           "complete": false,
2026-06-21T08:38:14.9608118Z           "evidence": []
2026-06-21T08:38:14.9608224Z         },
2026-06-21T08:38:14.9608347Z         "impl": {
2026-06-21T08:38:14.9608461Z           "complete": true,
2026-06-21T08:38:14.9608572Z           "evidence": [
2026-06-21T08:38:14.9608671Z             {
2026-06-21T08:38:14.9608830Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9608933Z               "line": 747
2026-06-21T08:38:14.9609091Z             },
2026-06-21T08:38:14.9609197Z             {
2026-06-21T08:38:14.9609348Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:14.9609486Z               "line": 113
2026-06-21T08:38:14.9609593Z             }
2026-06-21T08:38:14.9609730Z           ]
2026-06-21T08:38:14.9609837Z         },
2026-06-21T08:38:14.9609946Z         "int": {
2026-06-21T08:38:14.9610065Z           "complete": true,
2026-06-21T08:38:14.9610180Z           "evidence": [
2026-06-21T08:38:14.9610284Z             {
2026-06-21T08:38:14.9610423Z               "path": ".github/workflows/ci.yml",
2026-06-21T08:38:14.9610542Z               "line": 208
2026-06-21T08:38:14.9610651Z             },
2026-06-21T08:38:14.9610742Z             {
2026-06-21T08:38:14.9610890Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:14.9611004Z               "line": 1719
2026-06-21T08:38:14.9611110Z             }
2026-06-21T08:38:14.9611209Z           ]
2026-06-21T08:38:14.9611309Z         },
2026-06-21T08:38:14.9611416Z         "unit": {
2026-06-21T08:38:14.9611524Z           "complete": false,
2026-06-21T08:38:14.9611629Z           "evidence": []
2026-06-21T08:38:14.9611731Z         }
2026-06-21T08:38:14.9611834Z       }
2026-06-21T08:38:14.9611928Z     },
2026-06-21T08:38:14.9612033Z     {
2026-06-21T08:38:14.9612165Z       "id": "REQ-DOCS-6",
2026-06-21T08:38:14.9612527Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T08:38:14.9612655Z       "requiredStages": [
2026-06-21T08:38:14.9612761Z         "impl",
2026-06-21T08:38:14.9612870Z         "unit",
2026-06-21T08:38:14.9612965Z         "int"
2026-06-21T08:38:14.9613071Z       ],
2026-06-21T08:38:14.9613180Z       "stages": {
2026-06-21T08:38:14.9613285Z         "doc": {
2026-06-21T08:38:14.9613405Z           "complete": true,
2026-06-21T08:38:14.9613504Z           "evidence": [
2026-06-21T08:38:14.9613614Z             {
2026-06-21T08:38:14.9613781Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T08:38:14.9613886Z               "line": 4
2026-06-21T08:38:14.9613996Z             }
2026-06-21T08:38:14.9614086Z           ]
2026-06-21T08:38:14.9614195Z         },
2026-06-21T08:38:14.9614302Z         "impl": {
2026-06-21T08:38:14.9614424Z           "complete": true,
2026-06-21T08:38:14.9614635Z           "evidence": [
2026-06-21T08:38:14.9614748Z             {
2026-06-21T08:38:14.9614978Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9615082Z               "line": 5240
2026-06-21T08:38:14.9615191Z             }
2026-06-21T08:38:14.9615292Z           ]
2026-06-21T08:38:14.9615401Z         },
2026-06-21T08:38:14.9615506Z         "int": {
2026-06-21T08:38:14.9615626Z           "complete": true,
2026-06-21T08:38:14.9615735Z           "evidence": [
2026-06-21T08:38:14.9615825Z             {
2026-06-21T08:38:14.9615983Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T08:38:14.9616101Z               "line": 39
2026-06-21T08:38:14.9616213Z             }
2026-06-21T08:38:14.9616316Z           ]
2026-06-21T08:38:14.9616411Z         },
2026-06-21T08:38:14.9616518Z         "unit": {
2026-06-21T08:38:14.9616631Z           "complete": true,
2026-06-21T08:38:14.9616750Z           "evidence": [
2026-06-21T08:38:14.9616842Z             {
2026-06-21T08:38:14.9616993Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9617097Z               "line": 10742
2026-06-21T08:38:14.9617207Z             }
2026-06-21T08:38:14.9617310Z           ]
2026-06-21T08:38:14.9617410Z         }
2026-06-21T08:38:14.9617520Z       }
2026-06-21T08:38:14.9617620Z     },
2026-06-21T08:38:14.9617724Z     {
2026-06-21T08:38:14.9617835Z       "id": "REQ-ELEVATE-1",
2026-06-21T08:38:14.9621064Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T08:38:14.9621206Z       "requiredStages": [
2026-06-21T08:38:14.9621317Z         "doc",
2026-06-21T08:38:14.9621416Z         "impl",
2026-06-21T08:38:14.9621521Z         "unit"
2026-06-21T08:38:14.9621622Z       ],
2026-06-21T08:38:14.9621731Z       "stages": {
2026-06-21T08:38:14.9621836Z         "doc": {
2026-06-21T08:38:14.9621952Z           "complete": true,
2026-06-21T08:38:14.9622060Z           "evidence": [
2026-06-21T08:38:14.9622161Z             {
2026-06-21T08:38:14.9622281Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9622408Z               "line": 687
2026-06-21T08:38:14.9622516Z             }
2026-06-21T08:38:14.9622617Z           ]
2026-06-21T08:38:14.9622730Z         },
2026-06-21T08:38:14.9622833Z         "impl": {
2026-06-21T08:38:14.9622949Z           "complete": true,
2026-06-21T08:38:14.9623063Z           "evidence": [
2026-06-21T08:38:14.9623167Z             {
2026-06-21T08:38:14.9623297Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9623406Z               "line": 3572
2026-06-21T08:38:14.9623516Z             },
2026-06-21T08:38:14.9623621Z             {
2026-06-21T08:38:14.9623749Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9623875Z               "line": 3617
2026-06-21T08:38:14.9623974Z             },
2026-06-21T08:38:14.9624074Z             {
2026-06-21T08:38:14.9624199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9624308Z               "line": 3679
2026-06-21T08:38:14.9624408Z             },
2026-06-21T08:38:14.9624499Z             {
2026-06-21T08:38:14.9624785Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:14.9624890Z               "line": 92
2026-06-21T08:38:14.9625095Z             },
2026-06-21T08:38:14.9625200Z             {
2026-06-21T08:38:14.9625341Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:14.9625460Z               "line": 148
2026-06-21T08:38:14.9625561Z             }
2026-06-21T08:38:14.9625666Z           ]
2026-06-21T08:38:14.9625770Z         },
2026-06-21T08:38:14.9625876Z         "int": {
2026-06-21T08:38:14.9625999Z           "complete": false,
2026-06-21T08:38:14.9626110Z           "evidence": []
2026-06-21T08:38:14.9626205Z         },
2026-06-21T08:38:14.9626314Z         "unit": {
2026-06-21T08:38:14.9626439Z           "complete": true,
2026-06-21T08:38:14.9626548Z           "evidence": [
2026-06-21T08:38:14.9626648Z             {
2026-06-21T08:38:14.9626797Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:14.9626905Z               "line": 442
2026-06-21T08:38:14.9627020Z             },
2026-06-21T08:38:14.9627121Z             {
2026-06-21T08:38:14.9627268Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:14.9627383Z               "line": 460
2026-06-21T08:38:14.9627488Z             }
2026-06-21T08:38:14.9627591Z           ]
2026-06-21T08:38:14.9627691Z         }
2026-06-21T08:38:14.9627791Z       }
2026-06-21T08:38:14.9627875Z     },
2026-06-21T08:38:14.9627979Z     {
2026-06-21T08:38:14.9628114Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T08:38:14.9629979Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T08:38:14.9630115Z       "requiredStages": [
2026-06-21T08:38:14.9630212Z         "doc",
2026-06-21T08:38:14.9630313Z         "impl",
2026-06-21T08:38:14.9630420Z         "unit"
2026-06-21T08:38:14.9630524Z       ],
2026-06-21T08:38:14.9630630Z       "stages": {
2026-06-21T08:38:14.9630728Z         "doc": {
2026-06-21T08:38:14.9630851Z           "complete": true,
2026-06-21T08:38:14.9630962Z           "evidence": [
2026-06-21T08:38:14.9631057Z             {
2026-06-21T08:38:14.9631185Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9631296Z               "line": 711
2026-06-21T08:38:14.9631395Z             }
2026-06-21T08:38:14.9631504Z           ]
2026-06-21T08:38:14.9631615Z         },
2026-06-21T08:38:14.9631715Z         "impl": {
2026-06-21T08:38:14.9631839Z           "complete": true,
2026-06-21T08:38:14.9631944Z           "evidence": [
2026-06-21T08:38:14.9632058Z             {
2026-06-21T08:38:14.9632202Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9632310Z               "line": 1721
2026-06-21T08:38:14.9632420Z             },
2026-06-21T08:38:14.9632521Z             {
2026-06-21T08:38:14.9632658Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9632778Z               "line": 3125
2026-06-21T08:38:14.9632884Z             },
2026-06-21T08:38:14.9632997Z             {
2026-06-21T08:38:14.9633125Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9633248Z               "line": 3134
2026-06-21T08:38:14.9633352Z             }
2026-06-21T08:38:14.9633456Z           ]
2026-06-21T08:38:14.9633567Z         },
2026-06-21T08:38:14.9633666Z         "int": {
2026-06-21T08:38:14.9633790Z           "complete": false,
2026-06-21T08:38:14.9633900Z           "evidence": []
2026-06-21T08:38:14.9634004Z         },
2026-06-21T08:38:14.9634110Z         "unit": {
2026-06-21T08:38:14.9634338Z           "complete": true,
2026-06-21T08:38:14.9634449Z           "evidence": [
2026-06-21T08:38:14.9634553Z             {
2026-06-21T08:38:14.9634788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9634901Z               "line": 7950
2026-06-21T08:38:14.9635006Z             },
2026-06-21T08:38:14.9635108Z             {
2026-06-21T08:38:14.9635244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9635360Z               "line": 7991
2026-06-21T08:38:14.9635460Z             }
2026-06-21T08:38:14.9635573Z           ]
2026-06-21T08:38:14.9635670Z         }
2026-06-21T08:38:14.9635775Z       }
2026-06-21T08:38:14.9635873Z     },
2026-06-21T08:38:14.9635972Z     {
2026-06-21T08:38:14.9636107Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T08:38:14.9640943Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T08:38:14.9641123Z       "requiredStages": [
2026-06-21T08:38:14.9641228Z         "doc",
2026-06-21T08:38:14.9641330Z         "impl",
2026-06-21T08:38:14.9641435Z         "unit",
2026-06-21T08:38:14.9641536Z         "int"
2026-06-21T08:38:14.9641645Z       ],
2026-06-21T08:38:14.9641750Z       "stages": {
2026-06-21T08:38:14.9641861Z         "doc": {
2026-06-21T08:38:14.9641979Z           "complete": true,
2026-06-21T08:38:14.9642089Z           "evidence": [
2026-06-21T08:38:14.9642190Z             {
2026-06-21T08:38:14.9642317Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9642437Z               "line": 163
2026-06-21T08:38:14.9642537Z             }
2026-06-21T08:38:14.9642646Z           ]
2026-06-21T08:38:14.9642743Z         },
2026-06-21T08:38:14.9642847Z         "impl": {
2026-06-21T08:38:14.9642961Z           "complete": true,
2026-06-21T08:38:14.9643072Z           "evidence": [
2026-06-21T08:38:14.9643181Z             {
2026-06-21T08:38:14.9643334Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:14.9643449Z               "line": 105
2026-06-21T08:38:14.9643547Z             },
2026-06-21T08:38:14.9643656Z             {
2026-06-21T08:38:14.9643785Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9643907Z               "line": 7219
2026-06-21T08:38:14.9644017Z             }
2026-06-21T08:38:14.9644122Z           ]
2026-06-21T08:38:14.9644226Z         },
2026-06-21T08:38:14.9644336Z         "int": {
2026-06-21T08:38:14.9644460Z           "complete": true,
2026-06-21T08:38:14.9644564Z           "evidence": [
2026-06-21T08:38:14.9644675Z             {
2026-06-21T08:38:14.9644818Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9645043Z               "line": 7384
2026-06-21T08:38:14.9645152Z             }
2026-06-21T08:38:14.9645256Z           ]
2026-06-21T08:38:14.9645457Z         },
2026-06-21T08:38:14.9645557Z         "unit": {
2026-06-21T08:38:14.9645682Z           "complete": true,
2026-06-21T08:38:14.9645795Z           "evidence": [
2026-06-21T08:38:14.9645900Z             {
2026-06-21T08:38:14.9646034Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9646148Z               "line": 7355
2026-06-21T08:38:14.9646254Z             }
2026-06-21T08:38:14.9646358Z           ]
2026-06-21T08:38:14.9646471Z         }
2026-06-21T08:38:14.9646576Z       }
2026-06-21T08:38:14.9646677Z     },
2026-06-21T08:38:14.9646781Z     {
2026-06-21T08:38:14.9646905Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T08:38:14.9648255Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T08:38:14.9648397Z       "requiredStages": [
2026-06-21T08:38:14.9648503Z         "impl",
2026-06-21T08:38:14.9648608Z         "unit"
2026-06-21T08:38:14.9648711Z       ],
2026-06-21T08:38:14.9648816Z       "stages": {
2026-06-21T08:38:14.9648916Z         "doc": {
2026-06-21T08:38:14.9649123Z           "complete": false,
2026-06-21T08:38:14.9649244Z           "evidence": []
2026-06-21T08:38:14.9649343Z         },
2026-06-21T08:38:14.9649452Z         "impl": {
2026-06-21T08:38:14.9649568Z           "complete": true,
2026-06-21T08:38:14.9649681Z           "evidence": [
2026-06-21T08:38:14.9649777Z             {
2026-06-21T08:38:14.9649906Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9650020Z               "line": 3165
2026-06-21T08:38:14.9650126Z             }
2026-06-21T08:38:14.9650230Z           ]
2026-06-21T08:38:14.9650335Z         },
2026-06-21T08:38:14.9650446Z         "int": {
2026-06-21T08:38:14.9650564Z           "complete": false,
2026-06-21T08:38:14.9650687Z           "evidence": []
2026-06-21T08:38:14.9650793Z         },
2026-06-21T08:38:14.9650897Z         "unit": {
2026-06-21T08:38:14.9651007Z           "complete": true,
2026-06-21T08:38:14.9651113Z           "evidence": [
2026-06-21T08:38:14.9651217Z             {
2026-06-21T08:38:14.9651356Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9651480Z               "line": 7331
2026-06-21T08:38:14.9651583Z             }
2026-06-21T08:38:14.9651683Z           ]
2026-06-21T08:38:14.9651788Z         }
2026-06-21T08:38:14.9651891Z       }
2026-06-21T08:38:14.9651995Z     },
2026-06-21T08:38:14.9652102Z     {
2026-06-21T08:38:14.9652215Z       "id": "REQ-EP-1",
2026-06-21T08:38:14.9652378Z       "title": "Day-one endpoint types; open type system",
2026-06-21T08:38:14.9652506Z       "requiredStages": [
2026-06-21T08:38:14.9652615Z         "impl",
2026-06-21T08:38:14.9652721Z         "unit"
2026-06-21T08:38:14.9652826Z       ],
2026-06-21T08:38:14.9652930Z       "stages": {
2026-06-21T08:38:14.9653045Z         "doc": {
2026-06-21T08:38:14.9653169Z           "complete": false,
2026-06-21T08:38:14.9653278Z           "evidence": []
2026-06-21T08:38:14.9653384Z         },
2026-06-21T08:38:14.9653493Z         "impl": {
2026-06-21T08:38:14.9653618Z           "complete": true,
2026-06-21T08:38:14.9653723Z           "evidence": [
2026-06-21T08:38:14.9653827Z             {
2026-06-21T08:38:14.9653990Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9654098Z               "line": 77
2026-06-21T08:38:14.9654207Z             },
2026-06-21T08:38:14.9654317Z             {
2026-06-21T08:38:14.9654467Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9654572Z               "line": 94
2026-06-21T08:38:14.9654781Z             }
2026-06-21T08:38:14.9654891Z           ]
2026-06-21T08:38:14.9654992Z         },
2026-06-21T08:38:14.9655105Z         "int": {
2026-06-21T08:38:14.9655335Z           "complete": false,
2026-06-21T08:38:14.9655458Z           "evidence": []
2026-06-21T08:38:14.9655560Z         },
2026-06-21T08:38:14.9655668Z         "unit": {
2026-06-21T08:38:14.9655788Z           "complete": true,
2026-06-21T08:38:14.9655899Z           "evidence": [
2026-06-21T08:38:14.9656017Z             {
2026-06-21T08:38:14.9656165Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9656284Z               "line": 161
2026-06-21T08:38:14.9656388Z             },
2026-06-21T08:38:14.9656495Z             {
2026-06-21T08:38:14.9656650Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9660298Z               "line": 178
2026-06-21T08:38:14.9660447Z             }
2026-06-21T08:38:14.9660551Z           ]
2026-06-21T08:38:14.9660657Z         }
2026-06-21T08:38:14.9660762Z       }
2026-06-21T08:38:14.9660933Z     },
2026-06-21T08:38:14.9661039Z     {
2026-06-21T08:38:14.9661148Z       "id": "REQ-EP-2",
2026-06-21T08:38:14.9661363Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T08:38:14.9661486Z       "requiredStages": [
2026-06-21T08:38:14.9661597Z         "impl",
2026-06-21T08:38:14.9661702Z         "unit"
2026-06-21T08:38:14.9661805Z       ],
2026-06-21T08:38:14.9661916Z       "stages": {
2026-06-21T08:38:14.9662017Z         "doc": {
2026-06-21T08:38:14.9662143Z           "complete": false,
2026-06-21T08:38:14.9662253Z           "evidence": []
2026-06-21T08:38:14.9662357Z         },
2026-06-21T08:38:14.9662465Z         "impl": {
2026-06-21T08:38:14.9662584Z           "complete": true,
2026-06-21T08:38:14.9662704Z           "evidence": [
2026-06-21T08:38:14.9662803Z             {
2026-06-21T08:38:14.9662962Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9663076Z               "line": 114
2026-06-21T08:38:14.9663185Z             },
2026-06-21T08:38:14.9663286Z             {
2026-06-21T08:38:14.9663438Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9663553Z               "line": 131
2026-06-21T08:38:14.9663657Z             },
2026-06-21T08:38:14.9663762Z             {
2026-06-21T08:38:14.9663911Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9664024Z               "line": 138
2026-06-21T08:38:14.9664120Z             }
2026-06-21T08:38:14.9664221Z           ]
2026-06-21T08:38:14.9664334Z         },
2026-06-21T08:38:14.9664439Z         "int": {
2026-06-21T08:38:14.9664550Z           "complete": false,
2026-06-21T08:38:14.9664658Z           "evidence": []
2026-06-21T08:38:14.9664762Z         },
2026-06-21T08:38:14.9664867Z         "unit": {
2026-06-21T08:38:14.9664980Z           "complete": true,
2026-06-21T08:38:14.9665094Z           "evidence": [
2026-06-21T08:38:14.9665199Z             {
2026-06-21T08:38:14.9665351Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9665461Z               "line": 190
2026-06-21T08:38:14.9665566Z             },
2026-06-21T08:38:14.9665666Z             {
2026-06-21T08:38:14.9665819Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9665929Z               "line": 208
2026-06-21T08:38:14.9666033Z             },
2026-06-21T08:38:14.9666139Z             {
2026-06-21T08:38:14.9666286Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T08:38:14.9666410Z               "line": 221
2026-06-21T08:38:14.9666511Z             }
2026-06-21T08:38:14.9666620Z           ]
2026-06-21T08:38:14.9666725Z         }
2026-06-21T08:38:14.9666826Z       }
2026-06-21T08:38:14.9666930Z     },
2026-06-21T08:38:14.9667030Z     {
2026-06-21T08:38:14.9667150Z       "id": "REQ-EP-3",
2026-06-21T08:38:14.9667365Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T08:38:14.9667493Z       "requiredStages": [
2026-06-21T08:38:14.9667596Z         "impl",
2026-06-21T08:38:14.9667845Z         "unit"
2026-06-21T08:38:14.9667954Z       ],
2026-06-21T08:38:14.9668049Z       "stages": {
2026-06-21T08:38:14.9668235Z         "doc": {
2026-06-21T08:38:14.9668345Z           "complete": false,
2026-06-21T08:38:14.9668464Z           "evidence": []
2026-06-21T08:38:14.9668568Z         },
2026-06-21T08:38:14.9668669Z         "impl": {
2026-06-21T08:38:14.9668798Z           "complete": true,
2026-06-21T08:38:14.9668897Z           "evidence": [
2026-06-21T08:38:14.9669052Z             {
2026-06-21T08:38:14.9669208Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9669323Z               "line": 31
2026-06-21T08:38:14.9669418Z             },
2026-06-21T08:38:14.9669522Z             {
2026-06-21T08:38:14.9669677Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9669789Z               "line": 49
2026-06-21T08:38:14.9669893Z             }
2026-06-21T08:38:14.9669994Z           ]
2026-06-21T08:38:14.9670096Z         },
2026-06-21T08:38:14.9670205Z         "int": {
2026-06-21T08:38:14.9670321Z           "complete": false,
2026-06-21T08:38:14.9670430Z           "evidence": []
2026-06-21T08:38:14.9670529Z         },
2026-06-21T08:38:14.9670640Z         "unit": {
2026-06-21T08:38:14.9670754Z           "complete": true,
2026-06-21T08:38:14.9670863Z           "evidence": [
2026-06-21T08:38:14.9670964Z             {
2026-06-21T08:38:14.9671107Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9671208Z               "line": 156
2026-06-21T08:38:14.9671317Z             },
2026-06-21T08:38:14.9671450Z             {
2026-06-21T08:38:14.9671585Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9671703Z               "line": 164
2026-06-21T08:38:14.9671803Z             },
2026-06-21T08:38:14.9671895Z             {
2026-06-21T08:38:14.9672046Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9672147Z               "line": 177
2026-06-21T08:38:14.9672252Z             },
2026-06-21T08:38:14.9672356Z             {
2026-06-21T08:38:14.9672500Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9672619Z               "line": 200
2026-06-21T08:38:14.9672722Z             },
2026-06-21T08:38:14.9672827Z             {
2026-06-21T08:38:14.9672973Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9673091Z               "line": 216
2026-06-21T08:38:14.9673202Z             },
2026-06-21T08:38:14.9673293Z             {
2026-06-21T08:38:14.9673440Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T08:38:14.9673555Z               "line": 233
2026-06-21T08:38:14.9673654Z             }
2026-06-21T08:38:14.9673755Z           ]
2026-06-21T08:38:14.9673856Z         }
2026-06-21T08:38:14.9673965Z       }
2026-06-21T08:38:14.9674065Z     },
2026-06-21T08:38:14.9674165Z     {
2026-06-21T08:38:14.9674265Z       "id": "REQ-EP-4",
2026-06-21T08:38:14.9674443Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T08:38:14.9674566Z       "requiredStages": [
2026-06-21T08:38:14.9674665Z         "impl",
2026-06-21T08:38:14.9674772Z         "unit"
2026-06-21T08:38:14.9674871Z       ],
2026-06-21T08:38:14.9674976Z       "stages": {
2026-06-21T08:38:14.9675082Z         "doc": {
2026-06-21T08:38:14.9675209Z           "complete": false,
2026-06-21T08:38:14.9675322Z           "evidence": []
2026-06-21T08:38:14.9675423Z         },
2026-06-21T08:38:14.9675526Z         "impl": {
2026-06-21T08:38:14.9675644Z           "complete": true,
2026-06-21T08:38:14.9675764Z           "evidence": [
2026-06-21T08:38:14.9675860Z             {
2026-06-21T08:38:14.9676011Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9676122Z               "line": 764
2026-06-21T08:38:14.9676231Z             },
2026-06-21T08:38:14.9676336Z             {
2026-06-21T08:38:14.9676474Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9676588Z               "line": 1127
2026-06-21T08:38:14.9676803Z             },
2026-06-21T08:38:14.9676908Z             {
2026-06-21T08:38:14.9677057Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9677271Z               "line": 2270
2026-06-21T08:38:14.9677376Z             },
2026-06-21T08:38:14.9677475Z             {
2026-06-21T08:38:14.9677625Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9677733Z               "line": 118
2026-06-21T08:38:14.9677838Z             },
2026-06-21T08:38:14.9677939Z             {
2026-06-21T08:38:14.9678086Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9678204Z               "line": 699
2026-06-21T08:38:14.9678309Z             },
2026-06-21T08:38:14.9678415Z             {
2026-06-21T08:38:14.9678551Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9678662Z               "line": 836
2026-06-21T08:38:14.9678767Z             },
2026-06-21T08:38:14.9678871Z             {
2026-06-21T08:38:14.9679096Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9679215Z               "line": 321
2026-06-21T08:38:14.9679320Z             },
2026-06-21T08:38:14.9679424Z             {
2026-06-21T08:38:14.9679574Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9679687Z               "line": 508
2026-06-21T08:38:14.9679787Z             },
2026-06-21T08:38:14.9679888Z             {
2026-06-21T08:38:14.9680039Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9680164Z               "line": 1334
2026-06-21T08:38:14.9680265Z             }
2026-06-21T08:38:14.9680368Z           ]
2026-06-21T08:38:14.9680472Z         },
2026-06-21T08:38:14.9680578Z         "int": {
2026-06-21T08:38:14.9680699Z           "complete": false,
2026-06-21T08:38:14.9680804Z           "evidence": []
2026-06-21T08:38:14.9680910Z         },
2026-06-21T08:38:14.9681009Z         "unit": {
2026-06-21T08:38:14.9681119Z           "complete": true,
2026-06-21T08:38:14.9681224Z           "evidence": [
2026-06-21T08:38:14.9681333Z             {
2026-06-21T08:38:14.9681482Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9681596Z               "line": 927
2026-06-21T08:38:14.9681700Z             },
2026-06-21T08:38:14.9681802Z             {
2026-06-21T08:38:14.9681953Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T08:38:14.9682058Z               "line": 76
2026-06-21T08:38:14.9682164Z             },
2026-06-21T08:38:14.9682264Z             {
2026-06-21T08:38:14.9682412Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T08:38:14.9682525Z               "line": 147
2026-06-21T08:38:14.9682626Z             }
2026-06-21T08:38:14.9682731Z           ]
2026-06-21T08:38:14.9682826Z         }
2026-06-21T08:38:14.9682935Z       }
2026-06-21T08:38:14.9683032Z     },
2026-06-21T08:38:14.9683132Z     {
2026-06-21T08:38:14.9683254Z       "id": "REQ-EP-5",
2026-06-21T08:38:14.9683957Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T08:38:14.9684087Z       "requiredStages": [
2026-06-21T08:38:14.9684200Z         "impl",
2026-06-21T08:38:14.9684305Z         "unit",
2026-06-21T08:38:14.9684416Z         "int"
2026-06-21T08:38:14.9684515Z       ],
2026-06-21T08:38:14.9684610Z       "stages": {
2026-06-21T08:38:14.9684716Z         "doc": {
2026-06-21T08:38:14.9684825Z           "complete": false,
2026-06-21T08:38:14.9684935Z           "evidence": []
2026-06-21T08:38:14.9685027Z         },
2026-06-21T08:38:14.9685135Z         "impl": {
2026-06-21T08:38:14.9685244Z           "complete": true,
2026-06-21T08:38:14.9685365Z           "evidence": [
2026-06-21T08:38:14.9685469Z             {
2026-06-21T08:38:14.9685637Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:14.9685750Z               "line": 367
2026-06-21T08:38:14.9685959Z             },
2026-06-21T08:38:14.9686067Z             {
2026-06-21T08:38:14.9686214Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9686424Z               "line": 18
2026-06-21T08:38:14.9686519Z             },
2026-06-21T08:38:14.9686625Z             {
2026-06-21T08:38:14.9686781Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9686891Z               "line": 63
2026-06-21T08:38:14.9686992Z             },
2026-06-21T08:38:14.9687082Z             {
2026-06-21T08:38:14.9687236Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9687349Z               "line": 92
2026-06-21T08:38:14.9687454Z             },
2026-06-21T08:38:14.9687560Z             {
2026-06-21T08:38:14.9687702Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9687816Z               "line": 167
2026-06-21T08:38:14.9687917Z             },
2026-06-21T08:38:14.9688026Z             {
2026-06-21T08:38:14.9688170Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9688298Z               "line": 179
2026-06-21T08:38:14.9688412Z             },
2026-06-21T08:38:14.9688519Z             {
2026-06-21T08:38:14.9688669Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:14.9688778Z               "line": 114
2026-06-21T08:38:14.9688884Z             },
2026-06-21T08:38:14.9689069Z             {
2026-06-21T08:38:14.9689228Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9689336Z               "line": 22
2026-06-21T08:38:14.9689436Z             },
2026-06-21T08:38:14.9689542Z             {
2026-06-21T08:38:14.9689693Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9689809Z               "line": 145
2026-06-21T08:38:14.9689908Z             },
2026-06-21T08:38:14.9690008Z             {
2026-06-21T08:38:14.9690162Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9690271Z               "line": 174
2026-06-21T08:38:14.9690376Z             },
2026-06-21T08:38:14.9690477Z             {
2026-06-21T08:38:14.9690624Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9690734Z               "line": 196
2026-06-21T08:38:14.9690834Z             },
2026-06-21T08:38:14.9690942Z             {
2026-06-21T08:38:14.9691076Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9691194Z               "line": 221
2026-06-21T08:38:14.9691293Z             },
2026-06-21T08:38:14.9691393Z             {
2026-06-21T08:38:14.9691546Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9691650Z               "line": 247
2026-06-21T08:38:14.9691756Z             },
2026-06-21T08:38:14.9691856Z             {
2026-06-21T08:38:14.9692008Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9692109Z               "line": 270
2026-06-21T08:38:14.9692213Z             },
2026-06-21T08:38:14.9692318Z             {
2026-06-21T08:38:14.9692471Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9692589Z               "line": 104
2026-06-21T08:38:14.9692691Z             },
2026-06-21T08:38:14.9692794Z             {
2026-06-21T08:38:14.9692919Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9693039Z               "line": 6068
2026-06-21T08:38:14.9693133Z             },
2026-06-21T08:38:14.9693233Z             {
2026-06-21T08:38:14.9693368Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9693481Z               "line": 6202
2026-06-21T08:38:14.9693577Z             },
2026-06-21T08:38:14.9693678Z             {
2026-06-21T08:38:14.9693805Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9693914Z               "line": 6368
2026-06-21T08:38:14.9694010Z             },
2026-06-21T08:38:14.9694112Z             {
2026-06-21T08:38:14.9694246Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9694366Z               "line": 6896
2026-06-21T08:38:14.9694565Z             }
2026-06-21T08:38:14.9694675Z           ]
2026-06-21T08:38:14.9694779Z         },
2026-06-21T08:38:14.9694990Z         "int": {
2026-06-21T08:38:14.9695103Z           "complete": true,
2026-06-21T08:38:14.9695214Z           "evidence": [
2026-06-21T08:38:14.9695319Z             {
2026-06-21T08:38:14.9695476Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T08:38:14.9695587Z               "line": 16
2026-06-21T08:38:14.9695690Z             },
2026-06-21T08:38:14.9695791Z             {
2026-06-21T08:38:14.9695934Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T08:38:14.9696038Z               "line": 15
2026-06-21T08:38:14.9696139Z             }
2026-06-21T08:38:14.9696245Z           ]
2026-06-21T08:38:14.9696338Z         },
2026-06-21T08:38:14.9696452Z         "unit": {
2026-06-21T08:38:14.9696567Z           "complete": true,
2026-06-21T08:38:14.9696684Z           "evidence": [
2026-06-21T08:38:14.9696783Z             {
2026-06-21T08:38:14.9696942Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9697041Z               "line": 246
2026-06-21T08:38:14.9697151Z             },
2026-06-21T08:38:14.9697252Z             {
2026-06-21T08:38:14.9697389Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9697495Z               "line": 306
2026-06-21T08:38:14.9697599Z             },
2026-06-21T08:38:14.9697704Z             {
2026-06-21T08:38:14.9697843Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T08:38:14.9697952Z               "line": 363
2026-06-21T08:38:14.9698057Z             },
2026-06-21T08:38:14.9698163Z             {
2026-06-21T08:38:14.9698314Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9698415Z               "line": 286
2026-06-21T08:38:14.9698520Z             },
2026-06-21T08:38:14.9698620Z             {
2026-06-21T08:38:14.9698764Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:14.9698881Z               "line": 338
2026-06-21T08:38:14.9699069Z             },
2026-06-21T08:38:14.9699168Z             {
2026-06-21T08:38:14.9699319Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9699439Z               "line": 783
2026-06-21T08:38:14.9699544Z             },
2026-06-21T08:38:14.9699643Z             {
2026-06-21T08:38:14.9699778Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9699882Z               "line": 8751
2026-06-21T08:38:14.9699982Z             },
2026-06-21T08:38:14.9700083Z             {
2026-06-21T08:38:14.9700211Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9700325Z               "line": 8904
2026-06-21T08:38:14.9700426Z             },
2026-06-21T08:38:14.9700531Z             {
2026-06-21T08:38:14.9700660Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9700770Z               "line": 9493
2026-06-21T08:38:14.9700874Z             },
2026-06-21T08:38:14.9700975Z             {
2026-06-21T08:38:14.9701108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9701226Z               "line": 9609
2026-06-21T08:38:14.9701323Z             }
2026-06-21T08:38:14.9701418Z           ]
2026-06-21T08:38:14.9701521Z         }
2026-06-21T08:38:14.9701622Z       }
2026-06-21T08:38:14.9701726Z     },
2026-06-21T08:38:14.9701829Z     {
2026-06-21T08:38:14.9701944Z       "id": "REQ-EP-6",
2026-06-21T08:38:14.9703469Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T08:38:14.9703599Z       "requiredStages": [
2026-06-21T08:38:14.9703712Z         "doc",
2026-06-21T08:38:14.9703928Z         "impl",
2026-06-21T08:38:14.9704031Z         "unit"
2026-06-21T08:38:14.9704137Z       ],
2026-06-21T08:38:14.9704327Z       "stages": {
2026-06-21T08:38:14.9704431Z         "doc": {
2026-06-21T08:38:14.9704546Z           "complete": true,
2026-06-21T08:38:14.9704668Z           "evidence": [
2026-06-21T08:38:14.9704776Z             {
2026-06-21T08:38:14.9704897Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9705020Z               "line": 227
2026-06-21T08:38:14.9705120Z             }
2026-06-21T08:38:14.9705221Z           ]
2026-06-21T08:38:14.9705321Z         },
2026-06-21T08:38:14.9705430Z         "impl": {
2026-06-21T08:38:14.9705545Z           "complete": true,
2026-06-21T08:38:14.9705654Z           "evidence": [
2026-06-21T08:38:14.9705764Z             {
2026-06-21T08:38:14.9705907Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9706017Z               "line": 212
2026-06-21T08:38:14.9706118Z             }
2026-06-21T08:38:14.9706226Z           ]
2026-06-21T08:38:14.9706341Z         },
2026-06-21T08:38:14.9706447Z         "int": {
2026-06-21T08:38:14.9706569Z           "complete": true,
2026-06-21T08:38:14.9706689Z           "evidence": [
2026-06-21T08:38:14.9706791Z             {
2026-06-21T08:38:14.9706941Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T08:38:14.9707060Z               "line": 18
2026-06-21T08:38:14.9707169Z             }
2026-06-21T08:38:14.9707268Z           ]
2026-06-21T08:38:14.9707373Z         },
2026-06-21T08:38:14.9707478Z         "unit": {
2026-06-21T08:38:14.9707601Z           "complete": true,
2026-06-21T08:38:14.9707706Z           "evidence": [
2026-06-21T08:38:14.9707816Z             {
2026-06-21T08:38:14.9707982Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:14.9708088Z               "line": 556
2026-06-21T08:38:14.9708193Z             },
2026-06-21T08:38:14.9708283Z             {
2026-06-21T08:38:14.9708436Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9708559Z               "line": 904
2026-06-21T08:38:14.9708665Z             }
2026-06-21T08:38:14.9708760Z           ]
2026-06-21T08:38:14.9708865Z         }
2026-06-21T08:38:14.9709042Z       }
2026-06-21T08:38:14.9709136Z     },
2026-06-21T08:38:14.9709232Z     {
2026-06-21T08:38:14.9709362Z       "id": "REQ-EP-7",
2026-06-21T08:38:14.9711052Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T08:38:14.9711181Z       "requiredStages": [
2026-06-21T08:38:14.9711287Z         "doc",
2026-06-21T08:38:14.9711406Z         "impl",
2026-06-21T08:38:14.9711506Z         "unit"
2026-06-21T08:38:14.9711607Z       ],
2026-06-21T08:38:14.9711719Z       "stages": {
2026-06-21T08:38:14.9711821Z         "doc": {
2026-06-21T08:38:14.9711950Z           "complete": true,
2026-06-21T08:38:14.9712058Z           "evidence": [
2026-06-21T08:38:14.9712162Z             {
2026-06-21T08:38:14.9712286Z               "path": "CONTEXT.md",
2026-06-21T08:38:14.9712398Z               "line": 490
2026-06-21T08:38:14.9712499Z             }
2026-06-21T08:38:14.9712595Z           ]
2026-06-21T08:38:14.9712704Z         },
2026-06-21T08:38:14.9712808Z         "impl": {
2026-06-21T08:38:14.9712938Z           "complete": true,
2026-06-21T08:38:14.9713061Z           "evidence": [
2026-06-21T08:38:14.9713167Z             {
2026-06-21T08:38:14.9713319Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:14.9713433Z               "line": 505
2026-06-21T08:38:14.9713539Z             },
2026-06-21T08:38:14.9713634Z             {
2026-06-21T08:38:14.9713891Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:14.9714001Z               "line": 87
2026-06-21T08:38:14.9714192Z             },
2026-06-21T08:38:14.9714297Z             {
2026-06-21T08:38:14.9714455Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:14.9714559Z               "line": 81
2026-06-21T08:38:14.9714663Z             },
2026-06-21T08:38:14.9714770Z             {
2026-06-21T08:38:14.9714934Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:14.9715039Z               "line": 166
2026-06-21T08:38:14.9715149Z             },
2026-06-21T08:38:14.9715247Z             {
2026-06-21T08:38:14.9715390Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9715495Z               "line": 1645
2026-06-21T08:38:14.9715599Z             }
2026-06-21T08:38:14.9715705Z           ]
2026-06-21T08:38:14.9715809Z         },
2026-06-21T08:38:14.9715914Z         "int": {
2026-06-21T08:38:14.9716044Z           "complete": false,
2026-06-21T08:38:14.9716168Z           "evidence": []
2026-06-21T08:38:14.9716267Z         },
2026-06-21T08:38:14.9716382Z         "unit": {
2026-06-21T08:38:14.9716506Z           "complete": true,
2026-06-21T08:38:14.9716615Z           "evidence": [
2026-06-21T08:38:14.9716721Z             {
2026-06-21T08:38:14.9716863Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:14.9716979Z               "line": 623
2026-06-21T08:38:14.9717078Z             },
2026-06-21T08:38:14.9717187Z             {
2026-06-21T08:38:14.9717327Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9717430Z               "line": 212
2026-06-21T08:38:14.9717539Z             },
2026-06-21T08:38:14.9717644Z             {
2026-06-21T08:38:14.9717785Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:14.9717894Z               "line": 307
2026-06-21T08:38:14.9718000Z             },
2026-06-21T08:38:14.9718109Z             {
2026-06-21T08:38:14.9718238Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9718353Z               "line": 7724
2026-06-21T08:38:14.9718452Z             },
2026-06-21T08:38:14.9718557Z             {
2026-06-21T08:38:14.9718691Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9718814Z               "line": 7751
2026-06-21T08:38:14.9718921Z             }
2026-06-21T08:38:14.9719101Z           ]
2026-06-21T08:38:14.9719206Z         }
2026-06-21T08:38:14.9719306Z       }
2026-06-21T08:38:14.9719411Z     },
2026-06-21T08:38:14.9719511Z     {
2026-06-21T08:38:14.9719631Z       "id": "REQ-FRONT-1",
2026-06-21T08:38:14.9719846Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T08:38:14.9719964Z       "requiredStages": [],
2026-06-21T08:38:14.9720069Z       "stages": {
2026-06-21T08:38:14.9720175Z         "doc": {
2026-06-21T08:38:14.9720298Z           "complete": false,
2026-06-21T08:38:14.9720411Z           "evidence": []
2026-06-21T08:38:14.9720511Z         },
2026-06-21T08:38:14.9720617Z         "impl": {
2026-06-21T08:38:14.9720740Z           "complete": false,
2026-06-21T08:38:14.9720855Z           "evidence": []
2026-06-21T08:38:14.9720951Z         },
2026-06-21T08:38:14.9721059Z         "int": {
2026-06-21T08:38:14.9721180Z           "complete": false,
2026-06-21T08:38:14.9721289Z           "evidence": []
2026-06-21T08:38:14.9721384Z         },
2026-06-21T08:38:14.9721495Z         "unit": {
2026-06-21T08:38:14.9721613Z           "complete": false,
2026-06-21T08:38:14.9721727Z           "evidence": []
2026-06-21T08:38:14.9721828Z         }
2026-06-21T08:38:14.9721932Z       }
2026-06-21T08:38:14.9722041Z     },
2026-06-21T08:38:14.9722148Z     {
2026-06-21T08:38:14.9722280Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T08:38:14.9727662Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T08:38:14.9728009Z       "requiredStages": [
2026-06-21T08:38:14.9728109Z         "int"
2026-06-21T08:38:14.9728218Z       ],
2026-06-21T08:38:14.9728327Z       "stages": {
2026-06-21T08:38:14.9728431Z         "doc": {
2026-06-21T08:38:14.9728545Z           "complete": false,
2026-06-21T08:38:14.9728669Z           "evidence": []
2026-06-21T08:38:14.9728769Z         },
2026-06-21T08:38:14.9728875Z         "impl": {
2026-06-21T08:38:14.9729084Z           "complete": false,
2026-06-21T08:38:14.9729190Z           "evidence": []
2026-06-21T08:38:14.9729313Z         },
2026-06-21T08:38:14.9729413Z         "int": {
2026-06-21T08:38:14.9729533Z           "complete": true,
2026-06-21T08:38:14.9729647Z           "evidence": [
2026-06-21T08:38:14.9729742Z             {
2026-06-21T08:38:14.9729913Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T08:38:14.9730023Z               "line": 300
2026-06-21T08:38:14.9730125Z             }
2026-06-21T08:38:14.9730228Z           ]
2026-06-21T08:38:14.9730333Z         },
2026-06-21T08:38:14.9730434Z         "unit": {
2026-06-21T08:38:14.9730552Z           "complete": false,
2026-06-21T08:38:14.9730662Z           "evidence": []
2026-06-21T08:38:14.9730764Z         }
2026-06-21T08:38:14.9730867Z       }
2026-06-21T08:38:14.9730962Z     },
2026-06-21T08:38:14.9731066Z     {
2026-06-21T08:38:14.9731201Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T08:38:14.9733772Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T08:38:14.9733915Z       "requiredStages": [
2026-06-21T08:38:14.9734020Z         "impl",
2026-06-21T08:38:14.9734125Z         "unit",
2026-06-21T08:38:14.9734234Z         "int"
2026-06-21T08:38:14.9734453Z       ],
2026-06-21T08:38:14.9734593Z       "stages": {
2026-06-21T08:38:14.9734702Z         "doc": {
2026-06-21T08:38:14.9734917Z           "complete": false,
2026-06-21T08:38:14.9735031Z           "evidence": []
2026-06-21T08:38:14.9735131Z         },
2026-06-21T08:38:14.9735242Z         "impl": {
2026-06-21T08:38:14.9735355Z           "complete": true,
2026-06-21T08:38:14.9735469Z           "evidence": [
2026-06-21T08:38:14.9735589Z             {
2026-06-21T08:38:14.9735746Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9735856Z               "line": 257
2026-06-21T08:38:14.9735956Z             }
2026-06-21T08:38:14.9736064Z           ]
2026-06-21T08:38:14.9736159Z         },
2026-06-21T08:38:14.9736264Z         "int": {
2026-06-21T08:38:14.9736391Z           "complete": true,
2026-06-21T08:38:14.9736530Z           "evidence": [
2026-06-21T08:38:14.9736640Z             {
2026-06-21T08:38:14.9736801Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T08:38:14.9736926Z               "line": 93
2026-06-21T08:38:14.9737030Z             }
2026-06-21T08:38:14.9737140Z           ]
2026-06-21T08:38:14.9737250Z         },
2026-06-21T08:38:14.9737359Z         "unit": {
2026-06-21T08:38:14.9737488Z           "complete": true,
2026-06-21T08:38:14.9737597Z           "evidence": [
2026-06-21T08:38:14.9737702Z             {
2026-06-21T08:38:14.9737837Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9737959Z               "line": 802
2026-06-21T08:38:14.9738055Z             },
2026-06-21T08:38:14.9738156Z             {
2026-06-21T08:38:14.9738303Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9738438Z               "line": 824
2026-06-21T08:38:14.9738551Z             },
2026-06-21T08:38:14.9738645Z             {
2026-06-21T08:38:14.9738793Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9738910Z               "line": 855
2026-06-21T08:38:14.9739091Z             }
2026-06-21T08:38:14.9739197Z           ]
2026-06-21T08:38:14.9739300Z         }
2026-06-21T08:38:14.9739416Z       }
2026-06-21T08:38:14.9739531Z     },
2026-06-21T08:38:14.9739644Z     {
2026-06-21T08:38:14.9739788Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T08:38:14.9742271Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T08:38:14.9742405Z       "requiredStages": [
2026-06-21T08:38:14.9742518Z         "doc",
2026-06-21T08:38:14.9742624Z         "impl",
2026-06-21T08:38:14.9742733Z         "unit",
2026-06-21T08:38:14.9742838Z         "int"
2026-06-21T08:38:14.9742939Z       ],
2026-06-21T08:38:14.9743043Z       "stages": {
2026-06-21T08:38:14.9743138Z         "doc": {
2026-06-21T08:38:14.9743249Z           "complete": true,
2026-06-21T08:38:14.9743357Z           "evidence": [
2026-06-21T08:38:14.9743458Z             {
2026-06-21T08:38:14.9743598Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9743705Z               "line": 333
2026-06-21T08:38:14.9743814Z             }
2026-06-21T08:38:14.9743920Z           ]
2026-06-21T08:38:14.9744027Z         },
2026-06-21T08:38:14.9744131Z         "impl": {
2026-06-21T08:38:14.9744246Z           "complete": true,
2026-06-21T08:38:14.9744351Z           "evidence": [
2026-06-21T08:38:14.9744566Z             {
2026-06-21T08:38:14.9744727Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9744933Z               "line": 494
2026-06-21T08:38:14.9745042Z             },
2026-06-21T08:38:14.9745138Z             {
2026-06-21T08:38:14.9745295Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9745414Z               "line": 499
2026-06-21T08:38:14.9745520Z             },
2026-06-21T08:38:14.9745619Z             {
2026-06-21T08:38:14.9745768Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9745886Z               "line": 874
2026-06-21T08:38:14.9745987Z             },
2026-06-21T08:38:14.9746087Z             {
2026-06-21T08:38:14.9746248Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9746363Z               "line": 915
2026-06-21T08:38:14.9746469Z             },
2026-06-21T08:38:14.9746558Z             {
2026-06-21T08:38:14.9746720Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9746833Z               "line": 926
2026-06-21T08:38:14.9746937Z             },
2026-06-21T08:38:14.9747041Z             {
2026-06-21T08:38:14.9747195Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:14.9747313Z               "line": 358
2026-06-21T08:38:14.9747419Z             }
2026-06-21T08:38:14.9747514Z           ]
2026-06-21T08:38:14.9747618Z         },
2026-06-21T08:38:14.9747725Z         "int": {
2026-06-21T08:38:14.9747848Z           "complete": true,
2026-06-21T08:38:14.9747956Z           "evidence": [
2026-06-21T08:38:14.9748063Z             {
2026-06-21T08:38:14.9748229Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T08:38:14.9748334Z               "line": 30
2026-06-21T08:38:14.9748430Z             }
2026-06-21T08:38:14.9748529Z           ]
2026-06-21T08:38:14.9748635Z         },
2026-06-21T08:38:14.9748750Z         "unit": {
2026-06-21T08:38:14.9748868Z           "complete": true,
2026-06-21T08:38:14.9749050Z           "evidence": [
2026-06-21T08:38:14.9749154Z             {
2026-06-21T08:38:14.9749301Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9749428Z               "line": 1493
2026-06-21T08:38:14.9749527Z             },
2026-06-21T08:38:14.9749623Z             {
2026-06-21T08:38:14.9749776Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9749889Z               "line": 1518
2026-06-21T08:38:14.9750005Z             },
2026-06-21T08:38:14.9750105Z             {
2026-06-21T08:38:14.9750257Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9750372Z               "line": 1535
2026-06-21T08:38:14.9753383Z             },
2026-06-21T08:38:14.9753519Z             {
2026-06-21T08:38:14.9753693Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9753819Z               "line": 1578
2026-06-21T08:38:14.9753913Z             }
2026-06-21T08:38:14.9754013Z           ]
2026-06-21T08:38:14.9754134Z         }
2026-06-21T08:38:14.9754223Z       }
2026-06-21T08:38:14.9754332Z     },
2026-06-21T08:38:14.9754436Z     {
2026-06-21T08:38:14.9754611Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T08:38:14.9757260Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T08:38:14.9757645Z       "requiredStages": [],
2026-06-21T08:38:14.9757750Z       "stages": {
2026-06-21T08:38:14.9757864Z         "doc": {
2026-06-21T08:38:14.9757979Z           "complete": false,
2026-06-21T08:38:14.9758084Z           "evidence": []
2026-06-21T08:38:14.9758183Z         },
2026-06-21T08:38:14.9758290Z         "impl": {
2026-06-21T08:38:14.9758408Z           "complete": false,
2026-06-21T08:38:14.9758517Z           "evidence": []
2026-06-21T08:38:14.9758623Z         },
2026-06-21T08:38:14.9758727Z         "int": {
2026-06-21T08:38:14.9758836Z           "complete": false,
2026-06-21T08:38:14.9759042Z           "evidence": []
2026-06-21T08:38:14.9759147Z         },
2026-06-21T08:38:14.9759253Z         "unit": {
2026-06-21T08:38:14.9759375Z           "complete": false,
2026-06-21T08:38:14.9759490Z           "evidence": []
2026-06-21T08:38:14.9759582Z         }
2026-06-21T08:38:14.9759690Z       }
2026-06-21T08:38:14.9759789Z     },
2026-06-21T08:38:14.9759895Z     {
2026-06-21T08:38:14.9760064Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T08:38:14.9763806Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T08:38:14.9763953Z       "requiredStages": [
2026-06-21T08:38:14.9764064Z         "impl",
2026-06-21T08:38:14.9764172Z         "unit",
2026-06-21T08:38:14.9764277Z         "int"
2026-06-21T08:38:14.9764374Z       ],
2026-06-21T08:38:14.9764487Z       "stages": {
2026-06-21T08:38:14.9764582Z         "doc": {
2026-06-21T08:38:14.9764689Z           "complete": false,
2026-06-21T08:38:14.9764802Z           "evidence": []
2026-06-21T08:38:14.9764902Z         },
2026-06-21T08:38:14.9765006Z         "impl": {
2026-06-21T08:38:14.9765124Z           "complete": true,
2026-06-21T08:38:14.9765233Z           "evidence": [
2026-06-21T08:38:14.9765338Z             {
2026-06-21T08:38:14.9765485Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9765605Z               "line": 570
2026-06-21T08:38:14.9765705Z             },
2026-06-21T08:38:14.9765800Z             {
2026-06-21T08:38:14.9765948Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9766067Z               "line": 594
2026-06-21T08:38:14.9766176Z             },
2026-06-21T08:38:14.9766278Z             {
2026-06-21T08:38:14.9766430Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9766534Z               "line": 620
2026-06-21T08:38:14.9766640Z             },
2026-06-21T08:38:14.9766740Z             {
2026-06-21T08:38:14.9766893Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9767002Z               "line": 679
2026-06-21T08:38:14.9767107Z             },
2026-06-21T08:38:14.9767317Z             {
2026-06-21T08:38:14.9767460Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:14.9767678Z               "line": 89
2026-06-21T08:38:14.9767787Z             },
2026-06-21T08:38:14.9767892Z             {
2026-06-21T08:38:14.9768038Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:14.9768147Z               "line": 134
2026-06-21T08:38:14.9768243Z             }
2026-06-21T08:38:14.9768343Z           ]
2026-06-21T08:38:14.9768452Z         },
2026-06-21T08:38:14.9768558Z         "int": {
2026-06-21T08:38:14.9768677Z           "complete": true,
2026-06-21T08:38:14.9768791Z           "evidence": [
2026-06-21T08:38:14.9768892Z             {
2026-06-21T08:38:14.9769159Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T08:38:14.9769268Z               "line": 20
2026-06-21T08:38:14.9769368Z             }
2026-06-21T08:38:14.9769474Z           ]
2026-06-21T08:38:14.9769583Z         },
2026-06-21T08:38:14.9769692Z         "unit": {
2026-06-21T08:38:14.9769808Z           "complete": true,
2026-06-21T08:38:14.9769926Z           "evidence": [
2026-06-21T08:38:14.9770027Z             {
2026-06-21T08:38:14.9770170Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9770293Z               "line": 1047
2026-06-21T08:38:14.9770387Z             },
2026-06-21T08:38:14.9770492Z             {
2026-06-21T08:38:14.9770624Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:14.9770738Z               "line": 445
2026-06-21T08:38:14.9770834Z             }
2026-06-21T08:38:14.9770929Z           ]
2026-06-21T08:38:14.9771029Z         }
2026-06-21T08:38:14.9771130Z       }
2026-06-21T08:38:14.9771230Z     },
2026-06-21T08:38:14.9771329Z     {
2026-06-21T08:38:14.9771482Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T08:38:14.9774142Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T08:38:14.9774286Z       "requiredStages": [
2026-06-21T08:38:14.9774390Z         "doc",
2026-06-21T08:38:14.9774499Z         "impl",
2026-06-21T08:38:14.9774601Z         "unit",
2026-06-21T08:38:14.9774709Z         "int"
2026-06-21T08:38:14.9774809Z       ],
2026-06-21T08:38:14.9774911Z       "stages": {
2026-06-21T08:38:14.9775015Z         "doc": {
2026-06-21T08:38:14.9775124Z           "complete": true,
2026-06-21T08:38:14.9775235Z           "evidence": [
2026-06-21T08:38:14.9775330Z             {
2026-06-21T08:38:14.9775476Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9775585Z               "line": 302
2026-06-21T08:38:14.9775689Z             }
2026-06-21T08:38:14.9775797Z           ]
2026-06-21T08:38:14.9775898Z         },
2026-06-21T08:38:14.9775999Z         "impl": {
2026-06-21T08:38:14.9776107Z           "complete": true,
2026-06-21T08:38:14.9776222Z           "evidence": [
2026-06-21T08:38:14.9776313Z             {
2026-06-21T08:38:14.9776469Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:14.9776585Z               "line": 108
2026-06-21T08:38:14.9776689Z             },
2026-06-21T08:38:14.9776799Z             {
2026-06-21T08:38:14.9776942Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9777056Z               "line": 843
2026-06-21T08:38:14.9777271Z             },
2026-06-21T08:38:14.9777371Z             {
2026-06-21T08:38:14.9777525Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9777739Z               "line": 1043
2026-06-21T08:38:14.9777844Z             },
2026-06-21T08:38:14.9777943Z             {
2026-06-21T08:38:14.9778107Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9778216Z               "line": 23
2026-06-21T08:38:14.9778324Z             },
2026-06-21T08:38:14.9778429Z             {
2026-06-21T08:38:14.9778570Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9778688Z               "line": 113
2026-06-21T08:38:14.9778799Z             },
2026-06-21T08:38:14.9778903Z             {
2026-06-21T08:38:14.9779133Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9779251Z               "line": 158
2026-06-21T08:38:14.9779356Z             },
2026-06-21T08:38:14.9779457Z             {
2026-06-21T08:38:14.9779618Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9779729Z               "line": 218
2026-06-21T08:38:14.9779838Z             },
2026-06-21T08:38:14.9779938Z             {
2026-06-21T08:38:14.9780096Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9780210Z               "line": 261
2026-06-21T08:38:14.9780305Z             },
2026-06-21T08:38:14.9780416Z             {
2026-06-21T08:38:14.9780563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9780688Z               "line": 275
2026-06-21T08:38:14.9780791Z             },
2026-06-21T08:38:14.9780895Z             {
2026-06-21T08:38:14.9781048Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9781150Z               "line": 320
2026-06-21T08:38:14.9781259Z             },
2026-06-21T08:38:14.9781351Z             {
2026-06-21T08:38:14.9781494Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9781613Z               "line": 347
2026-06-21T08:38:14.9781714Z             },
2026-06-21T08:38:14.9781818Z             {
2026-06-21T08:38:14.9781972Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9782085Z               "line": 359
2026-06-21T08:38:14.9782185Z             },
2026-06-21T08:38:14.9782291Z             {
2026-06-21T08:38:14.9782433Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9782543Z               "line": 373
2026-06-21T08:38:14.9782648Z             },
2026-06-21T08:38:14.9782743Z             {
2026-06-21T08:38:14.9782891Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9783001Z               "line": 400
2026-06-21T08:38:14.9783106Z             },
2026-06-21T08:38:14.9783211Z             {
2026-06-21T08:38:14.9783348Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9783459Z               "line": 643
2026-06-21T08:38:14.9783560Z             },
2026-06-21T08:38:14.9783668Z             {
2026-06-21T08:38:14.9783824Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9783930Z               "line": 989
2026-06-21T08:38:14.9784039Z             },
2026-06-21T08:38:14.9784129Z             {
2026-06-21T08:38:14.9784278Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9784382Z               "line": 295
2026-06-21T08:38:14.9784492Z             },
2026-06-21T08:38:14.9784593Z             {
2026-06-21T08:38:14.9784744Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9784865Z               "line": 1191
2026-06-21T08:38:14.9784969Z             },
2026-06-21T08:38:14.9785073Z             {
2026-06-21T08:38:14.9785217Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9785341Z               "line": 1263
2026-06-21T08:38:14.9785432Z             },
2026-06-21T08:38:14.9785532Z             {
2026-06-21T08:38:14.9785679Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9785899Z               "line": 1275
2026-06-21T08:38:14.9786007Z             },
2026-06-21T08:38:14.9786198Z             {
2026-06-21T08:38:14.9786343Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9786458Z               "line": 1976
2026-06-21T08:38:14.9786564Z             },
2026-06-21T08:38:14.9786672Z             {
2026-06-21T08:38:14.9786817Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9786926Z               "line": 188
2026-06-21T08:38:14.9787025Z             },
2026-06-21T08:38:14.9787136Z             {
2026-06-21T08:38:14.9787282Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9787384Z               "line": 265
2026-06-21T08:38:14.9787493Z             },
2026-06-21T08:38:14.9787588Z             {
2026-06-21T08:38:14.9787736Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9787845Z               "line": 276
2026-06-21T08:38:14.9787950Z             },
2026-06-21T08:38:14.9788061Z             {
2026-06-21T08:38:14.9788203Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9788323Z               "line": 329
2026-06-21T08:38:14.9788424Z             },
2026-06-21T08:38:14.9788527Z             {
2026-06-21T08:38:14.9788676Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9788790Z               "line": 56
2026-06-21T08:38:14.9788894Z             },
2026-06-21T08:38:14.9789088Z             {
2026-06-21T08:38:14.9789244Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9789359Z               "line": 188
2026-06-21T08:38:14.9789464Z             },
2026-06-21T08:38:14.9789563Z             {
2026-06-21T08:38:14.9789721Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T08:38:14.9789835Z               "line": 82
2026-06-21T08:38:14.9789936Z             },
2026-06-21T08:38:14.9790041Z             {
2026-06-21T08:38:14.9790183Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9790308Z               "line": 308
2026-06-21T08:38:14.9790407Z             },
2026-06-21T08:38:14.9790522Z             {
2026-06-21T08:38:14.9790666Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:14.9790770Z               "line": 424
2026-06-21T08:38:14.9790880Z             },
2026-06-21T08:38:14.9790981Z             {
2026-06-21T08:38:14.9791108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:14.9791224Z               "line": 2006
2026-06-21T08:38:14.9791333Z             }
2026-06-21T08:38:14.9791441Z           ]
2026-06-21T08:38:14.9791541Z         },
2026-06-21T08:38:14.9791650Z         "int": {
2026-06-21T08:38:14.9791758Z           "complete": true,
2026-06-21T08:38:14.9791863Z           "evidence": [
2026-06-21T08:38:14.9791954Z             {
2026-06-21T08:38:14.9792106Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T08:38:14.9792217Z               "line": 57
2026-06-21T08:38:14.9792322Z             },
2026-06-21T08:38:14.9792430Z             {
2026-06-21T08:38:14.9792565Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T08:38:14.9792683Z               "line": 41
2026-06-21T08:38:14.9792773Z             }
2026-06-21T08:38:14.9792880Z           ]
2026-06-21T08:38:14.9792974Z         },
2026-06-21T08:38:14.9793070Z         "unit": {
2026-06-21T08:38:14.9793190Z           "complete": true,
2026-06-21T08:38:14.9793304Z           "evidence": [
2026-06-21T08:38:14.9793412Z             {
2026-06-21T08:38:14.9793556Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:14.9793656Z               "line": 532
2026-06-21T08:38:14.9793767Z             },
2026-06-21T08:38:14.9793866Z             {
2026-06-21T08:38:14.9794019Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:14.9794125Z               "line": 757
2026-06-21T08:38:14.9794233Z             },
2026-06-21T08:38:14.9794332Z             {
2026-06-21T08:38:14.9794475Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9794699Z               "line": 1067
2026-06-21T08:38:14.9794805Z             },
2026-06-21T08:38:14.9794999Z             {
2026-06-21T08:38:14.9795139Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9795243Z               "line": 1101
2026-06-21T08:38:14.9795353Z             },
2026-06-21T08:38:14.9795458Z             {
2026-06-21T08:38:14.9795605Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9795716Z               "line": 1143
2026-06-21T08:38:14.9795820Z             },
2026-06-21T08:38:14.9795925Z             {
2026-06-21T08:38:14.9796078Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9796187Z               "line": 1215
2026-06-21T08:38:14.9796287Z             },
2026-06-21T08:38:14.9796388Z             {
2026-06-21T08:38:14.9796530Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9796648Z               "line": 1228
2026-06-21T08:38:14.9796753Z             },
2026-06-21T08:38:14.9796856Z             {
2026-06-21T08:38:14.9796994Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9797110Z               "line": 1251
2026-06-21T08:38:14.9797213Z             },
2026-06-21T08:38:14.9797304Z             {
2026-06-21T08:38:14.9797457Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9797566Z               "line": 1277
2026-06-21T08:38:14.9797672Z             },
2026-06-21T08:38:14.9797777Z             {
2026-06-21T08:38:14.9797919Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9798029Z               "line": 1291
2026-06-21T08:38:14.9798134Z             },
2026-06-21T08:38:14.9798234Z             {
2026-06-21T08:38:14.9798382Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9798491Z               "line": 1315
2026-06-21T08:38:14.9798598Z             },
2026-06-21T08:38:14.9798701Z             {
2026-06-21T08:38:14.9798854Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9799077Z               "line": 1447
2026-06-21T08:38:14.9799184Z             },
2026-06-21T08:38:14.9799289Z             {
2026-06-21T08:38:14.9799444Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9799559Z               "line": 1623
2026-06-21T08:38:14.9799653Z             },
2026-06-21T08:38:14.9799756Z             {
2026-06-21T08:38:14.9799899Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9800015Z               "line": 1678
2026-06-21T08:38:14.9800104Z             },
2026-06-21T08:38:14.9800215Z             {
2026-06-21T08:38:14.9800362Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9800467Z               "line": 1724
2026-06-21T08:38:14.9800573Z             },
2026-06-21T08:38:14.9800673Z             {
2026-06-21T08:38:14.9800830Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9800944Z               "line": 1769
2026-06-21T08:38:14.9801039Z             },
2026-06-21T08:38:14.9801140Z             {
2026-06-21T08:38:14.9801291Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9801411Z               "line": 1813
2026-06-21T08:38:14.9801512Z             },
2026-06-21T08:38:14.9801625Z             {
2026-06-21T08:38:14.9801765Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9801875Z               "line": 1855
2026-06-21T08:38:14.9801973Z             },
2026-06-21T08:38:14.9802072Z             {
2026-06-21T08:38:14.9802220Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9802328Z               "line": 2329
2026-06-21T08:38:14.9802433Z             },
2026-06-21T08:38:14.9802534Z             {
2026-06-21T08:38:14.9802676Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9802796Z               "line": 217
2026-06-21T08:38:14.9802896Z             },
2026-06-21T08:38:14.9803111Z             {
2026-06-21T08:38:14.9803253Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9803473Z               "line": 233
2026-06-21T08:38:14.9803572Z             },
2026-06-21T08:38:14.9803672Z             {
2026-06-21T08:38:14.9803825Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9803935Z               "line": 254
2026-06-21T08:38:14.9804036Z             },
2026-06-21T08:38:14.9804140Z             {
2026-06-21T08:38:14.9804288Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9804389Z               "line": 265
2026-06-21T08:38:14.9804487Z             },
2026-06-21T08:38:14.9804593Z             {
2026-06-21T08:38:14.9804742Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9804859Z               "line": 278
2026-06-21T08:38:14.9804964Z             },
2026-06-21T08:38:14.9805069Z             {
2026-06-21T08:38:14.9805221Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9805346Z               "line": 289
2026-06-21T08:38:14.9805451Z             },
2026-06-21T08:38:14.9805555Z             {
2026-06-21T08:38:14.9805708Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9805822Z               "line": 301
2026-06-21T08:38:14.9805913Z             },
2026-06-21T08:38:14.9806018Z             {
2026-06-21T08:38:14.9806165Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9806281Z               "line": 312
2026-06-21T08:38:14.9806380Z             },
2026-06-21T08:38:14.9806490Z             {
2026-06-21T08:38:14.9806639Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9806747Z               "line": 323
2026-06-21T08:38:14.9806857Z             },
2026-06-21T08:38:14.9806958Z             {
2026-06-21T08:38:14.9807109Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9807223Z               "line": 332
2026-06-21T08:38:14.9807332Z             },
2026-06-21T08:38:14.9807444Z             {
2026-06-21T08:38:14.9807588Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9807712Z               "line": 342
2026-06-21T08:38:14.9807811Z             },
2026-06-21T08:38:14.9807917Z             {
2026-06-21T08:38:14.9808064Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T08:38:14.9808184Z               "line": 358
2026-06-21T08:38:14.9808294Z             },
2026-06-21T08:38:14.9808398Z             {
2026-06-21T08:38:14.9808547Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9808656Z               "line": 758
2026-06-21T08:38:14.9808765Z             },
2026-06-21T08:38:14.9808866Z             {
2026-06-21T08:38:14.9809080Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9809191Z               "line": 794
2026-06-21T08:38:14.9809295Z             },
2026-06-21T08:38:14.9809394Z             {
2026-06-21T08:38:14.9809539Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:14.9809662Z               "line": 966
2026-06-21T08:38:14.9809763Z             },
2026-06-21T08:38:14.9809873Z             {
2026-06-21T08:38:14.9810023Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T08:38:14.9810129Z               "line": 145
2026-06-21T08:38:14.9810232Z             },
2026-06-21T08:38:14.9810330Z             {
2026-06-21T08:38:14.9810484Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T08:38:14.9810598Z               "line": 224
2026-06-21T08:38:14.9810703Z             },
2026-06-21T08:38:14.9810809Z             {
2026-06-21T08:38:14.9810955Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T08:38:14.9811071Z               "line": 293
2026-06-21T08:38:14.9811175Z             },
2026-06-21T08:38:14.9811280Z             {
2026-06-21T08:38:14.9811428Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T08:38:14.9811537Z               "line": 17
2026-06-21T08:38:14.9811748Z             },
2026-06-21T08:38:14.9811852Z             {
2026-06-21T08:38:14.9812010Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T08:38:14.9812214Z               "line": 104
2026-06-21T08:38:14.9812330Z             }
2026-06-21T08:38:14.9812425Z           ]
2026-06-21T08:38:14.9812523Z         }
2026-06-21T08:38:14.9812627Z       }
2026-06-21T08:38:14.9812714Z     },
2026-06-21T08:38:14.9812808Z     {
2026-06-21T08:38:14.9812954Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T08:38:14.9816002Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T08:38:14.9816148Z       "requiredStages": [
2026-06-21T08:38:14.9816263Z         "doc",
2026-06-21T08:38:14.9816363Z         "impl",
2026-06-21T08:38:14.9816468Z         "unit",
2026-06-21T08:38:14.9816564Z         "int"
2026-06-21T08:38:14.9816659Z       ],
2026-06-21T08:38:14.9816768Z       "stages": {
2026-06-21T08:38:14.9816870Z         "doc": {
2026-06-21T08:38:14.9816993Z           "complete": true,
2026-06-21T08:38:14.9817102Z           "evidence": [
2026-06-21T08:38:14.9817213Z             {
2026-06-21T08:38:14.9817350Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9817465Z               "line": 388
2026-06-21T08:38:14.9817565Z             }
2026-06-21T08:38:14.9817674Z           ]
2026-06-21T08:38:14.9817778Z         },
2026-06-21T08:38:14.9817882Z         "impl": {
2026-06-21T08:38:14.9818005Z           "complete": true,
2026-06-21T08:38:14.9818110Z           "evidence": [
2026-06-21T08:38:14.9818211Z             {
2026-06-21T08:38:14.9818366Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9818482Z               "line": 823
2026-06-21T08:38:14.9818586Z             },
2026-06-21T08:38:14.9818686Z             {
2026-06-21T08:38:14.9818830Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9819035Z               "line": 846
2026-06-21T08:38:14.9819131Z             }
2026-06-21T08:38:14.9819235Z           ]
2026-06-21T08:38:14.9819340Z         },
2026-06-21T08:38:14.9819455Z         "int": {
2026-06-21T08:38:14.9819569Z           "complete": true,
2026-06-21T08:38:14.9819684Z           "evidence": [
2026-06-21T08:38:14.9819775Z             {
2026-06-21T08:38:14.9819941Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T08:38:14.9820047Z               "line": 228
2026-06-21T08:38:14.9820155Z             },
2026-06-21T08:38:14.9820261Z             {
2026-06-21T08:38:14.9820409Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T08:38:14.9820522Z               "line": 468
2026-06-21T08:38:14.9820621Z             }
2026-06-21T08:38:14.9820726Z           ]
2026-06-21T08:38:14.9820829Z         },
2026-06-21T08:38:14.9820943Z         "unit": {
2026-06-21T08:38:14.9821059Z           "complete": true,
2026-06-21T08:38:14.9821168Z           "evidence": [
2026-06-21T08:38:14.9821277Z             {
2026-06-21T08:38:14.9821416Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:14.9821525Z               "line": 1583
2026-06-21T08:38:14.9821726Z             }
2026-06-21T08:38:14.9821835Z           ]
2026-06-21T08:38:14.9821935Z         }
2026-06-21T08:38:14.9822131Z       }
2026-06-21T08:38:14.9822236Z     },
2026-06-21T08:38:14.9822332Z     {
2026-06-21T08:38:14.9822484Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T08:38:14.9826084Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T08:38:14.9826243Z       "requiredStages": [
2026-06-21T08:38:14.9826346Z         "doc",
2026-06-21T08:38:14.9826446Z         "impl",
2026-06-21T08:38:14.9826542Z         "unit"
2026-06-21T08:38:14.9826646Z       ],
2026-06-21T08:38:14.9826752Z       "stages": {
2026-06-21T08:38:14.9826871Z         "doc": {
2026-06-21T08:38:14.9826994Z           "complete": true,
2026-06-21T08:38:14.9827110Z           "evidence": [
2026-06-21T08:38:14.9827229Z             {
2026-06-21T08:38:14.9827362Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9827482Z               "line": 395
2026-06-21T08:38:14.9827581Z             }
2026-06-21T08:38:14.9827677Z           ]
2026-06-21T08:38:14.9827778Z         },
2026-06-21T08:38:14.9827881Z         "impl": {
2026-06-21T08:38:14.9827991Z           "complete": true,
2026-06-21T08:38:14.9828098Z           "evidence": [
2026-06-21T08:38:14.9828205Z             {
2026-06-21T08:38:14.9828352Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9828457Z               "line": 75
2026-06-21T08:38:14.9828565Z             }
2026-06-21T08:38:14.9828670Z           ]
2026-06-21T08:38:14.9828776Z         },
2026-06-21T08:38:14.9828870Z         "int": {
2026-06-21T08:38:14.9829066Z           "complete": false,
2026-06-21T08:38:14.9829180Z           "evidence": []
2026-06-21T08:38:14.9829290Z         },
2026-06-21T08:38:14.9829395Z         "unit": {
2026-06-21T08:38:14.9829513Z           "complete": true,
2026-06-21T08:38:14.9829634Z           "evidence": [
2026-06-21T08:38:14.9829738Z             {
2026-06-21T08:38:14.9829890Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:14.9830001Z               "line": 632
2026-06-21T08:38:14.9830110Z             }
2026-06-21T08:38:14.9830219Z           ]
2026-06-21T08:38:14.9830321Z         }
2026-06-21T08:38:14.9830424Z       }
2026-06-21T08:38:14.9830520Z     },
2026-06-21T08:38:14.9830627Z     {
2026-06-21T08:38:14.9830763Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T08:38:14.9830974Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T08:38:14.9831091Z       "requiredStages": [
2026-06-21T08:38:14.9831196Z         "impl",
2026-06-21T08:38:14.9831305Z         "unit"
2026-06-21T08:38:14.9831408Z       ],
2026-06-21T08:38:14.9831513Z       "stages": {
2026-06-21T08:38:14.9831614Z         "doc": {
2026-06-21T08:38:14.9831723Z           "complete": false,
2026-06-21T08:38:14.9831938Z           "evidence": []
2026-06-21T08:38:14.9832038Z         },
2026-06-21T08:38:14.9832142Z         "impl": {
2026-06-21T08:38:14.9832339Z           "complete": true,
2026-06-21T08:38:14.9832447Z           "evidence": [
2026-06-21T08:38:14.9832549Z             {
2026-06-21T08:38:14.9832705Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9832820Z               "line": 172
2026-06-21T08:38:14.9832920Z             },
2026-06-21T08:38:14.9833029Z             {
2026-06-21T08:38:14.9833169Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9833287Z               "line": 18
2026-06-21T08:38:14.9833382Z             },
2026-06-21T08:38:14.9833494Z             {
2026-06-21T08:38:14.9833639Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9833753Z               "line": 100
2026-06-21T08:38:14.9833858Z             }
2026-06-21T08:38:14.9833951Z           ]
2026-06-21T08:38:14.9834060Z         },
2026-06-21T08:38:14.9834161Z         "int": {
2026-06-21T08:38:14.9834290Z           "complete": false,
2026-06-21T08:38:14.9834399Z           "evidence": []
2026-06-21T08:38:14.9834510Z         },
2026-06-21T08:38:14.9834609Z         "unit": {
2026-06-21T08:38:14.9834719Z           "complete": true,
2026-06-21T08:38:14.9834834Z           "evidence": [
2026-06-21T08:38:14.9834934Z             {
2026-06-21T08:38:14.9835087Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:14.9835200Z               "line": 857
2026-06-21T08:38:14.9835300Z             },
2026-06-21T08:38:14.9835407Z             {
2026-06-21T08:38:14.9835544Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9835663Z               "line": 161
2026-06-21T08:38:14.9835764Z             },
2026-06-21T08:38:14.9835877Z             {
2026-06-21T08:38:14.9836022Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:14.9836135Z               "line": 233
2026-06-21T08:38:14.9836245Z             }
2026-06-21T08:38:14.9836346Z           ]
2026-06-21T08:38:14.9836446Z         }
2026-06-21T08:38:14.9836539Z       }
2026-06-21T08:38:14.9836644Z     },
2026-06-21T08:38:14.9836750Z     {
2026-06-21T08:38:14.9836887Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T08:38:14.9837341Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T08:38:14.9837461Z       "requiredStages": [
2026-06-21T08:38:14.9837564Z         "impl",
2026-06-21T08:38:14.9837675Z         "unit"
2026-06-21T08:38:14.9837774Z       ],
2026-06-21T08:38:14.9837874Z       "stages": {
2026-06-21T08:38:14.9837970Z         "doc": {
2026-06-21T08:38:14.9838093Z           "complete": true,
2026-06-21T08:38:14.9838203Z           "evidence": [
2026-06-21T08:38:14.9838309Z             {
2026-06-21T08:38:14.9838436Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9838547Z               "line": 220
2026-06-21T08:38:14.9838658Z             }
2026-06-21T08:38:14.9838761Z           ]
2026-06-21T08:38:14.9838864Z         },
2026-06-21T08:38:14.9839045Z         "impl": {
2026-06-21T08:38:14.9839172Z           "complete": true,
2026-06-21T08:38:14.9839288Z           "evidence": [
2026-06-21T08:38:14.9839388Z             {
2026-06-21T08:38:14.9839545Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:14.9839655Z               "line": 316
2026-06-21T08:38:14.9839759Z             },
2026-06-21T08:38:14.9839860Z             {
2026-06-21T08:38:14.9840017Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:14.9840131Z               "line": 356
2026-06-21T08:38:14.9840237Z             },
2026-06-21T08:38:14.9840346Z             {
2026-06-21T08:38:14.9840494Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:14.9840617Z               "line": 578
2026-06-21T08:38:14.9840722Z             },
2026-06-21T08:38:14.9840828Z             {
2026-06-21T08:38:14.9840965Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:14.9841201Z               "line": 77
2026-06-21T08:38:14.9841395Z             }
2026-06-21T08:38:14.9841496Z           ]
2026-06-21T08:38:14.9841595Z         },
2026-06-21T08:38:14.9841699Z         "int": {
2026-06-21T08:38:14.9841813Z           "complete": false,
2026-06-21T08:38:14.9841916Z           "evidence": []
2026-06-21T08:38:14.9842021Z         },
2026-06-21T08:38:14.9842126Z         "unit": {
2026-06-21T08:38:14.9842241Z           "complete": true,
2026-06-21T08:38:14.9842354Z           "evidence": [
2026-06-21T08:38:14.9842456Z             {
2026-06-21T08:38:14.9842602Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:14.9842712Z               "line": 747
2026-06-21T08:38:14.9842813Z             },
2026-06-21T08:38:14.9842908Z             {
2026-06-21T08:38:14.9843056Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:14.9843170Z               "line": 785
2026-06-21T08:38:14.9843275Z             },
2026-06-21T08:38:14.9843380Z             {
2026-06-21T08:38:14.9843528Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:14.9843642Z               "line": 166
2026-06-21T08:38:14.9843748Z             }
2026-06-21T08:38:14.9843847Z           ]
2026-06-21T08:38:14.9843957Z         }
2026-06-21T08:38:14.9844059Z       }
2026-06-21T08:38:14.9844166Z     },
2026-06-21T08:38:14.9844265Z     {
2026-06-21T08:38:14.9844413Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T08:38:14.9845008Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T08:38:14.9845117Z       "requiredStages": [
2026-06-21T08:38:14.9845221Z         "impl",
2026-06-21T08:38:14.9845328Z         "unit"
2026-06-21T08:38:14.9845432Z       ],
2026-06-21T08:38:14.9845541Z       "stages": {
2026-06-21T08:38:14.9845643Z         "doc": {
2026-06-21T08:38:14.9845775Z           "complete": false,
2026-06-21T08:38:14.9845884Z           "evidence": []
2026-06-21T08:38:14.9845990Z         },
2026-06-21T08:38:14.9846099Z         "impl": {
2026-06-21T08:38:14.9846213Z           "complete": true,
2026-06-21T08:38:14.9849222Z           "evidence": [
2026-06-21T08:38:14.9849359Z             {
2026-06-21T08:38:14.9849530Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T08:38:14.9849638Z               "line": 22
2026-06-21T08:38:14.9849746Z             },
2026-06-21T08:38:14.9849848Z             {
2026-06-21T08:38:14.9849995Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:14.9850110Z               "line": 487
2026-06-21T08:38:14.9850205Z             },
2026-06-21T08:38:14.9850314Z             {
2026-06-21T08:38:14.9850463Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T08:38:14.9850568Z               "line": 17
2026-06-21T08:38:14.9850677Z             },
2026-06-21T08:38:14.9850792Z             {
2026-06-21T08:38:14.9850948Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T08:38:14.9851059Z               "line": 147
2026-06-21T08:38:14.9851164Z             },
2026-06-21T08:38:14.9851263Z             {
2026-06-21T08:38:14.9851412Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:14.9851525Z               "line": 226
2026-06-21T08:38:14.9851630Z             },
2026-06-21T08:38:14.9851727Z             {
2026-06-21T08:38:14.9851868Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:14.9851984Z               "line": 251
2026-06-21T08:38:14.9852085Z             },
2026-06-21T08:38:14.9852193Z             {
2026-06-21T08:38:14.9852345Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:14.9852458Z               "line": 277
2026-06-21T08:38:14.9852566Z             },
2026-06-21T08:38:14.9852667Z             {
2026-06-21T08:38:14.9852815Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:14.9853063Z               "line": 124
2026-06-21T08:38:14.9853172Z             },
2026-06-21T08:38:14.9853369Z             {
2026-06-21T08:38:14.9853515Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:14.9853626Z               "line": 224
2026-06-21T08:38:14.9853725Z             }
2026-06-21T08:38:14.9853830Z           ]
2026-06-21T08:38:14.9853921Z         },
2026-06-21T08:38:14.9854022Z         "int": {
2026-06-21T08:38:14.9854145Z           "complete": false,
2026-06-21T08:38:14.9854251Z           "evidence": []
2026-06-21T08:38:14.9854355Z         },
2026-06-21T08:38:14.9854459Z         "unit": {
2026-06-21T08:38:14.9854570Z           "complete": true,
2026-06-21T08:38:14.9854675Z           "evidence": [
2026-06-21T08:38:14.9854783Z             {
2026-06-21T08:38:14.9854931Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T08:38:14.9855039Z               "line": 63
2026-06-21T08:38:14.9855147Z             },
2026-06-21T08:38:14.9855253Z             {
2026-06-21T08:38:14.9855400Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T08:38:14.9855520Z               "line": 73
2026-06-21T08:38:14.9855611Z             },
2026-06-21T08:38:14.9855720Z             {
2026-06-21T08:38:14.9855858Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T08:38:14.9855968Z               "line": 85
2026-06-21T08:38:14.9856072Z             },
2026-06-21T08:38:14.9856173Z             {
2026-06-21T08:38:14.9856321Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T08:38:14.9856430Z               "line": 346
2026-06-21T08:38:14.9856537Z             },
2026-06-21T08:38:14.9856640Z             {
2026-06-21T08:38:14.9856793Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T08:38:14.9856903Z               "line": 281
2026-06-21T08:38:14.9857012Z             },
2026-06-21T08:38:14.9857113Z             {
2026-06-21T08:38:14.9857265Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T08:38:14.9857384Z               "line": 322
2026-06-21T08:38:14.9857486Z             },
2026-06-21T08:38:14.9857589Z             {
2026-06-21T08:38:14.9857735Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T08:38:14.9857846Z               "line": 360
2026-06-21T08:38:14.9857951Z             },
2026-06-21T08:38:14.9858055Z             {
2026-06-21T08:38:14.9858213Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:14.9858322Z               "line": 688
2026-06-21T08:38:14.9858423Z             },
2026-06-21T08:38:14.9858523Z             {
2026-06-21T08:38:14.9858679Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:14.9858790Z               "line": 397
2026-06-21T08:38:14.9858904Z             },
2026-06-21T08:38:14.9859077Z             {
2026-06-21T08:38:14.9859218Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:14.9859323Z               "line": 440
2026-06-21T08:38:14.9859425Z             }
2026-06-21T08:38:14.9859529Z           ]
2026-06-21T08:38:14.9859633Z         }
2026-06-21T08:38:14.9859735Z       }
2026-06-21T08:38:14.9859838Z     },
2026-06-21T08:38:14.9859938Z     {
2026-06-21T08:38:14.9860061Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T08:38:14.9860312Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T08:38:14.9860432Z       "requiredStages": [
2026-06-21T08:38:14.9860545Z         "impl",
2026-06-21T08:38:14.9860646Z         "unit"
2026-06-21T08:38:14.9860752Z       ],
2026-06-21T08:38:14.9860856Z       "stages": {
2026-06-21T08:38:14.9860965Z         "doc": {
2026-06-21T08:38:14.9861076Z           "complete": false,
2026-06-21T08:38:14.9861180Z           "evidence": []
2026-06-21T08:38:14.9861285Z         },
2026-06-21T08:38:14.9861390Z         "impl": {
2026-06-21T08:38:14.9861495Z           "complete": true,
2026-06-21T08:38:14.9861604Z           "evidence": [
2026-06-21T08:38:14.9861710Z             {
2026-06-21T08:38:14.9861958Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T08:38:14.9862086Z               "line": 169
2026-06-21T08:38:14.9862278Z             }
2026-06-21T08:38:14.9862382Z           ]
2026-06-21T08:38:14.9862482Z         },
2026-06-21T08:38:14.9862588Z         "int": {
2026-06-21T08:38:14.9862706Z           "complete": true,
2026-06-21T08:38:14.9862819Z           "evidence": [
2026-06-21T08:38:14.9862919Z             {
2026-06-21T08:38:14.9863070Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T08:38:14.9863179Z               "line": 44
2026-06-21T08:38:14.9863285Z             },
2026-06-21T08:38:14.9863385Z             {
2026-06-21T08:38:14.9863522Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T08:38:14.9863628Z               "line": 66
2026-06-21T08:38:14.9863732Z             }
2026-06-21T08:38:14.9863842Z           ]
2026-06-21T08:38:14.9863943Z         },
2026-06-21T08:38:14.9864047Z         "unit": {
2026-06-21T08:38:14.9864152Z           "complete": true,
2026-06-21T08:38:14.9864262Z           "evidence": [
2026-06-21T08:38:14.9864362Z             {
2026-06-21T08:38:14.9864510Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T08:38:14.9864624Z               "line": 186
2026-06-21T08:38:14.9864729Z             },
2026-06-21T08:38:14.9864830Z             {
2026-06-21T08:38:14.9864967Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T08:38:14.9865077Z               "line": 238
2026-06-21T08:38:14.9865183Z             },
2026-06-21T08:38:14.9865291Z             {
2026-06-21T08:38:14.9865438Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T08:38:14.9865543Z               "line": 266
2026-06-21T08:38:14.9865651Z             }
2026-06-21T08:38:14.9865745Z           ]
2026-06-21T08:38:14.9865856Z         }
2026-06-21T08:38:14.9865956Z       }
2026-06-21T08:38:14.9866060Z     },
2026-06-21T08:38:14.9866162Z     {
2026-06-21T08:38:14.9866313Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T08:38:14.9870711Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T08:38:14.9870896Z       "requiredStages": [],
2026-06-21T08:38:14.9871002Z       "stages": {
2026-06-21T08:38:14.9871106Z         "doc": {
2026-06-21T08:38:14.9871230Z           "complete": false,
2026-06-21T08:38:14.9871340Z           "evidence": []
2026-06-21T08:38:14.9871444Z         },
2026-06-21T08:38:14.9871550Z         "impl": {
2026-06-21T08:38:14.9871673Z           "complete": false,
2026-06-21T08:38:14.9871787Z           "evidence": []
2026-06-21T08:38:14.9871893Z         },
2026-06-21T08:38:14.9872002Z         "int": {
2026-06-21T08:38:14.9872222Z           "complete": false,
2026-06-21T08:38:14.9872341Z           "evidence": []
2026-06-21T08:38:14.9872441Z         },
2026-06-21T08:38:14.9872646Z         "unit": {
2026-06-21T08:38:14.9872760Z           "complete": false,
2026-06-21T08:38:14.9872867Z           "evidence": []
2026-06-21T08:38:14.9872965Z         }
2026-06-21T08:38:14.9873070Z       }
2026-06-21T08:38:14.9873172Z     },
2026-06-21T08:38:14.9873262Z     {
2026-06-21T08:38:14.9873426Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T08:38:14.9887200Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T08:38:14.9887720Z       "requiredStages": [
2026-06-21T08:38:14.9887829Z         "doc",
2026-06-21T08:38:14.9887940Z         "impl",
2026-06-21T08:38:14.9888040Z         "unit",
2026-06-21T08:38:14.9888144Z         "int"
2026-06-21T08:38:14.9888246Z       ],
2026-06-21T08:38:14.9888355Z       "stages": {
2026-06-21T08:38:14.9888459Z         "doc": {
2026-06-21T08:38:14.9888575Z           "complete": true,
2026-06-21T08:38:14.9888683Z           "evidence": [
2026-06-21T08:38:14.9888783Z             {
2026-06-21T08:38:14.9888927Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9889137Z               "line": 468
2026-06-21T08:38:14.9889237Z             }
2026-06-21T08:38:14.9889335Z           ]
2026-06-21T08:38:14.9889459Z         },
2026-06-21T08:38:14.9889570Z         "impl": {
2026-06-21T08:38:14.9889693Z           "complete": true,
2026-06-21T08:38:14.9889807Z           "evidence": [
2026-06-21T08:38:14.9889913Z             {
2026-06-21T08:38:14.9890059Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9890166Z               "line": 342
2026-06-21T08:38:14.9890265Z             },
2026-06-21T08:38:14.9890370Z             {
2026-06-21T08:38:14.9890513Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:14.9890627Z               "line": 1188
2026-06-21T08:38:14.9890733Z             },
2026-06-21T08:38:14.9890833Z             {
2026-06-21T08:38:14.9890990Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9891101Z               "line": 763
2026-06-21T08:38:14.9891204Z             }
2026-06-21T08:38:14.9891304Z           ]
2026-06-21T08:38:14.9891411Z         },
2026-06-21T08:38:14.9891514Z         "int": {
2026-06-21T08:38:14.9891627Z           "complete": true,
2026-06-21T08:38:14.9891728Z           "evidence": [
2026-06-21T08:38:14.9891836Z             {
2026-06-21T08:38:14.9891982Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:14.9892098Z               "line": 1163
2026-06-21T08:38:14.9892193Z             },
2026-06-21T08:38:14.9892297Z             {
2026-06-21T08:38:14.9892442Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:14.9892550Z               "line": 1264
2026-06-21T08:38:14.9892655Z             },
2026-06-21T08:38:14.9892761Z             {
2026-06-21T08:38:14.9892908Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:14.9893014Z               "line": 1169
2026-06-21T08:38:14.9893123Z             }
2026-06-21T08:38:14.9893218Z           ]
2026-06-21T08:38:14.9893319Z         },
2026-06-21T08:38:14.9893433Z         "unit": {
2026-06-21T08:38:14.9893538Z           "complete": true,
2026-06-21T08:38:14.9893644Z           "evidence": [
2026-06-21T08:38:14.9893747Z             {
2026-06-21T08:38:14.9894005Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9894124Z               "line": 2777
2026-06-21T08:38:14.9894316Z             }
2026-06-21T08:38:14.9894419Z           ]
2026-06-21T08:38:14.9894518Z         }
2026-06-21T08:38:14.9894619Z       }
2026-06-21T08:38:14.9894717Z     },
2026-06-21T08:38:14.9894821Z     {
2026-06-21T08:38:14.9894970Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T08:38:14.9895422Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T08:38:14.9895547Z       "requiredStages": [
2026-06-21T08:38:14.9895652Z         "impl",
2026-06-21T08:38:14.9895761Z         "unit",
2026-06-21T08:38:14.9895856Z         "int"
2026-06-21T08:38:14.9895957Z       ],
2026-06-21T08:38:14.9896066Z       "stages": {
2026-06-21T08:38:14.9896176Z         "doc": {
2026-06-21T08:38:14.9896305Z           "complete": false,
2026-06-21T08:38:14.9896423Z           "evidence": []
2026-06-21T08:38:14.9896534Z         },
2026-06-21T08:38:14.9896643Z         "impl": {
2026-06-21T08:38:14.9896757Z           "complete": true,
2026-06-21T08:38:14.9896878Z           "evidence": [
2026-06-21T08:38:14.9896981Z             {
2026-06-21T08:38:14.9897133Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9897242Z               "line": 178
2026-06-21T08:38:14.9897336Z             },
2026-06-21T08:38:14.9897445Z             {
2026-06-21T08:38:14.9897595Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9897702Z               "line": 226
2026-06-21T08:38:14.9897808Z             },
2026-06-21T08:38:14.9897903Z             {
2026-06-21T08:38:14.9898041Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:14.9898152Z               "line": 79
2026-06-21T08:38:14.9898257Z             },
2026-06-21T08:38:14.9898360Z             {
2026-06-21T08:38:14.9898505Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:14.9898623Z               "line": 52
2026-06-21T08:38:14.9898723Z             },
2026-06-21T08:38:14.9898843Z             {
2026-06-21T08:38:14.9899063Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:14.9899172Z               "line": 263
2026-06-21T08:38:14.9899281Z             },
2026-06-21T08:38:14.9899397Z             {
2026-06-21T08:38:14.9899538Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9899649Z               "line": 27
2026-06-21T08:38:14.9899755Z             },
2026-06-21T08:38:14.9899858Z             {
2026-06-21T08:38:14.9900010Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9900125Z               "line": 79
2026-06-21T08:38:14.9900238Z             },
2026-06-21T08:38:14.9900344Z             {
2026-06-21T08:38:14.9900497Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9900601Z               "line": 102
2026-06-21T08:38:14.9900712Z             },
2026-06-21T08:38:14.9900807Z             {
2026-06-21T08:38:14.9900944Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:14.9901069Z               "line": 116
2026-06-21T08:38:14.9901169Z             }
2026-06-21T08:38:14.9901278Z           ]
2026-06-21T08:38:14.9901375Z         },
2026-06-21T08:38:14.9901483Z         "int": {
2026-06-21T08:38:14.9901593Z           "complete": true,
2026-06-21T08:38:14.9901708Z           "evidence": [
2026-06-21T08:38:14.9901812Z             {
2026-06-21T08:38:14.9901971Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T08:38:14.9902083Z               "line": 43
2026-06-21T08:38:14.9902192Z             }
2026-06-21T08:38:14.9902293Z           ]
2026-06-21T08:38:14.9902391Z         },
2026-06-21T08:38:14.9902505Z         "unit": {
2026-06-21T08:38:14.9902625Z           "complete": true,
2026-06-21T08:38:14.9902734Z           "evidence": [
2026-06-21T08:38:14.9902843Z             {
2026-06-21T08:38:14.9903091Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:14.9903225Z               "line": 678
2026-06-21T08:38:14.9903425Z             },
2026-06-21T08:38:14.9903531Z             {
2026-06-21T08:38:14.9903674Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:14.9903787Z               "line": 495
2026-06-21T08:38:14.9903898Z             },
2026-06-21T08:38:14.9904002Z             {
2026-06-21T08:38:14.9904155Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9904270Z               "line": 124
2026-06-21T08:38:14.9904369Z             },
2026-06-21T08:38:14.9904475Z             {
2026-06-21T08:38:14.9904622Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9904746Z               "line": 143
2026-06-21T08:38:14.9904833Z             },
2026-06-21T08:38:14.9904942Z             {
2026-06-21T08:38:14.9905088Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9905194Z               "line": 160
2026-06-21T08:38:14.9905305Z             },
2026-06-21T08:38:14.9905410Z             {
2026-06-21T08:38:14.9905564Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9905682Z               "line": 187
2026-06-21T08:38:14.9905787Z             },
2026-06-21T08:38:14.9905892Z             {
2026-06-21T08:38:14.9906044Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T08:38:14.9906150Z               "line": 206
2026-06-21T08:38:14.9906260Z             },
2026-06-21T08:38:14.9906363Z             {
2026-06-21T08:38:14.9906517Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:14.9906641Z               "line": 229
2026-06-21T08:38:14.9906746Z             }
2026-06-21T08:38:14.9906860Z           ]
2026-06-21T08:38:14.9906960Z         }
2026-06-21T08:38:14.9907066Z       }
2026-06-21T08:38:14.9907170Z     },
2026-06-21T08:38:14.9907270Z     {
2026-06-21T08:38:14.9907428Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T08:38:14.9908116Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T08:38:14.9908248Z       "requiredStages": [
2026-06-21T08:38:14.9908359Z         "impl",
2026-06-21T08:38:14.9908468Z         "unit"
2026-06-21T08:38:14.9908568Z       ],
2026-06-21T08:38:14.9908679Z       "stages": {
2026-06-21T08:38:14.9908792Z         "doc": {
2026-06-21T08:38:14.9908916Z           "complete": false,
2026-06-21T08:38:14.9909103Z           "evidence": []
2026-06-21T08:38:14.9909202Z         },
2026-06-21T08:38:14.9909323Z         "impl": {
2026-06-21T08:38:14.9909436Z           "complete": true,
2026-06-21T08:38:14.9909540Z           "evidence": [
2026-06-21T08:38:14.9909642Z             {
2026-06-21T08:38:14.9909798Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9909918Z               "line": 1222
2026-06-21T08:38:14.9910019Z             },
2026-06-21T08:38:14.9910127Z             {
2026-06-21T08:38:14.9910286Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:14.9910404Z               "line": 1476
2026-06-21T08:38:14.9910517Z             }
2026-06-21T08:38:14.9910627Z           ]
2026-06-21T08:38:14.9910733Z         },
2026-06-21T08:38:14.9910837Z         "int": {
2026-06-21T08:38:14.9910967Z           "complete": false,
2026-06-21T08:38:14.9911085Z           "evidence": []
2026-06-21T08:38:14.9911185Z         },
2026-06-21T08:38:14.9911296Z         "unit": {
2026-06-21T08:38:14.9911414Z           "complete": true,
2026-06-21T08:38:14.9911524Z           "evidence": [
2026-06-21T08:38:14.9911643Z             {
2026-06-21T08:38:14.9911838Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T08:38:14.9911954Z               "line": 161
2026-06-21T08:38:14.9912049Z             }
2026-06-21T08:38:14.9912153Z           ]
2026-06-21T08:38:14.9912367Z         }
2026-06-21T08:38:14.9912477Z       }
2026-06-21T08:38:14.9912574Z     },
2026-06-21T08:38:14.9912682Z     {
2026-06-21T08:38:14.9912942Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T08:38:14.9914705Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T08:38:14.9914835Z       "requiredStages": [
2026-06-21T08:38:14.9914949Z         "impl",
2026-06-21T08:38:14.9915059Z         "unit"
2026-06-21T08:38:14.9915168Z       ],
2026-06-21T08:38:14.9915278Z       "stages": {
2026-06-21T08:38:14.9915388Z         "doc": {
2026-06-21T08:38:14.9915511Z           "complete": false,
2026-06-21T08:38:14.9915634Z           "evidence": []
2026-06-21T08:38:14.9915734Z         },
2026-06-21T08:38:14.9915847Z         "impl": {
2026-06-21T08:38:14.9915970Z           "complete": true,
2026-06-21T08:38:14.9916081Z           "evidence": [
2026-06-21T08:38:14.9916194Z             {
2026-06-21T08:38:14.9916352Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:14.9916467Z               "line": 257
2026-06-21T08:38:14.9916571Z             }
2026-06-21T08:38:14.9916677Z           ]
2026-06-21T08:38:14.9916786Z         },
2026-06-21T08:38:14.9916890Z         "int": {
2026-06-21T08:38:14.9917016Z           "complete": false,
2026-06-21T08:38:14.9917134Z           "evidence": []
2026-06-21T08:38:14.9917238Z         },
2026-06-21T08:38:14.9917350Z         "unit": {
2026-06-21T08:38:14.9917463Z           "complete": true,
2026-06-21T08:38:14.9917582Z           "evidence": [
2026-06-21T08:38:14.9917683Z             {
2026-06-21T08:38:14.9917835Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:14.9917950Z               "line": 360
2026-06-21T08:38:14.9918050Z             }
2026-06-21T08:38:14.9918149Z           ]
2026-06-21T08:38:14.9918253Z         }
2026-06-21T08:38:14.9918353Z       }
2026-06-21T08:38:14.9918452Z     },
2026-06-21T08:38:14.9918556Z     {
2026-06-21T08:38:14.9918691Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T08:38:14.9920588Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T08:38:14.9920735Z       "requiredStages": [
2026-06-21T08:38:14.9920847Z         "impl",
2026-06-21T08:38:14.9920955Z         "unit"
2026-06-21T08:38:14.9921054Z       ],
2026-06-21T08:38:14.9921169Z       "stages": {
2026-06-21T08:38:14.9921274Z         "doc": {
2026-06-21T08:38:14.9921397Z           "complete": false,
2026-06-21T08:38:14.9921512Z           "evidence": []
2026-06-21T08:38:14.9921613Z         },
2026-06-21T08:38:14.9921721Z         "impl": {
2026-06-21T08:38:14.9921846Z           "complete": true,
2026-06-21T08:38:14.9921960Z           "evidence": [
2026-06-21T08:38:14.9922065Z             {
2026-06-21T08:38:14.9922213Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:14.9922336Z               "line": 1018
2026-06-21T08:38:14.9922433Z             },
2026-06-21T08:38:14.9922537Z             {
2026-06-21T08:38:14.9922795Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9922922Z               "line": 283
2026-06-21T08:38:14.9923125Z             },
2026-06-21T08:38:14.9923227Z             {
2026-06-21T08:38:14.9923375Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9923489Z               "line": 316
2026-06-21T08:38:14.9923592Z             },
2026-06-21T08:38:14.9923697Z             {
2026-06-21T08:38:14.9923841Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T08:38:14.9923954Z               "line": 26
2026-06-21T08:38:14.9924059Z             }
2026-06-21T08:38:14.9924160Z           ]
2026-06-21T08:38:14.9924264Z         },
2026-06-21T08:38:14.9924375Z         "int": {
2026-06-21T08:38:14.9924489Z           "complete": false,
2026-06-21T08:38:14.9924607Z           "evidence": []
2026-06-21T08:38:14.9924713Z         },
2026-06-21T08:38:14.9924818Z         "unit": {
2026-06-21T08:38:14.9924932Z           "complete": true,
2026-06-21T08:38:14.9925042Z           "evidence": [
2026-06-21T08:38:14.9925156Z             {
2026-06-21T08:38:14.9925300Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T08:38:14.9925418Z               "line": 271
2026-06-21T08:38:14.9925523Z             },
2026-06-21T08:38:14.9925629Z             {
2026-06-21T08:38:14.9925770Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T08:38:14.9925886Z               "line": 348
2026-06-21T08:38:14.9925987Z             }
2026-06-21T08:38:14.9926085Z           ]
2026-06-21T08:38:14.9926185Z         }
2026-06-21T08:38:14.9926294Z       }
2026-06-21T08:38:14.9926398Z     },
2026-06-21T08:38:14.9926507Z     {
2026-06-21T08:38:14.9926641Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T08:38:14.9926859Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T08:38:14.9926989Z       "requiredStages": [
2026-06-21T08:38:14.9927093Z         "impl",
2026-06-21T08:38:14.9927203Z         "unit"
2026-06-21T08:38:14.9927308Z       ],
2026-06-21T08:38:14.9927412Z       "stages": {
2026-06-21T08:38:14.9927518Z         "doc": {
2026-06-21T08:38:14.9927651Z           "complete": false,
2026-06-21T08:38:14.9927756Z           "evidence": []
2026-06-21T08:38:14.9927861Z         },
2026-06-21T08:38:14.9927975Z         "impl": {
2026-06-21T08:38:14.9928085Z           "complete": true,
2026-06-21T08:38:14.9928196Z           "evidence": [
2026-06-21T08:38:14.9928300Z             {
2026-06-21T08:38:14.9928447Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9928572Z               "line": 40
2026-06-21T08:38:14.9928676Z             },
2026-06-21T08:38:14.9928784Z             {
2026-06-21T08:38:14.9928927Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9929193Z               "line": 103
2026-06-21T08:38:14.9929298Z             },
2026-06-21T08:38:14.9929406Z             {
2026-06-21T08:38:14.9929556Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9929669Z               "line": 218
2026-06-21T08:38:14.9929784Z             },
2026-06-21T08:38:14.9929884Z             {
2026-06-21T08:38:14.9930036Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9930147Z               "line": 323
2026-06-21T08:38:14.9930251Z             }
2026-06-21T08:38:14.9930356Z           ]
2026-06-21T08:38:14.9930458Z         },
2026-06-21T08:38:14.9930566Z         "int": {
2026-06-21T08:38:14.9930685Z           "complete": false,
2026-06-21T08:38:14.9930810Z           "evidence": []
2026-06-21T08:38:14.9930909Z         },
2026-06-21T08:38:14.9931014Z         "unit": {
2026-06-21T08:38:14.9931139Z           "complete": true,
2026-06-21T08:38:14.9931247Z           "evidence": [
2026-06-21T08:38:14.9931354Z             {
2026-06-21T08:38:14.9931482Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9931595Z               "line": 361
2026-06-21T08:38:14.9931704Z             },
2026-06-21T08:38:14.9931805Z             {
2026-06-21T08:38:14.9932096Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9932201Z               "line": 433
2026-06-21T08:38:14.9932411Z             },
2026-06-21T08:38:14.9932511Z             {
2026-06-21T08:38:14.9932658Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9932773Z               "line": 496
2026-06-21T08:38:14.9932877Z             },
2026-06-21T08:38:14.9932983Z             {
2026-06-21T08:38:14.9933125Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9933239Z               "line": 517
2026-06-21T08:38:14.9933341Z             }
2026-06-21T08:38:14.9933450Z           ]
2026-06-21T08:38:14.9933549Z         }
2026-06-21T08:38:14.9933656Z       }
2026-06-21T08:38:14.9933764Z     },
2026-06-21T08:38:14.9933873Z     {
2026-06-21T08:38:14.9934016Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T08:38:14.9936345Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T08:38:14.9936494Z       "requiredStages": [
2026-06-21T08:38:14.9936604Z         "impl",
2026-06-21T08:38:14.9936697Z         "unit"
2026-06-21T08:38:14.9936807Z       ],
2026-06-21T08:38:14.9936912Z       "stages": {
2026-06-21T08:38:14.9937024Z         "doc": {
2026-06-21T08:38:14.9937144Z           "complete": false,
2026-06-21T08:38:14.9937258Z           "evidence": []
2026-06-21T08:38:14.9937367Z         },
2026-06-21T08:38:14.9937472Z         "impl": {
2026-06-21T08:38:14.9937607Z           "complete": true,
2026-06-21T08:38:14.9937710Z           "evidence": [
2026-06-21T08:38:14.9937816Z             {
2026-06-21T08:38:14.9937973Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:14.9938083Z               "line": 402
2026-06-21T08:38:14.9938193Z             },
2026-06-21T08:38:14.9938292Z             {
2026-06-21T08:38:14.9938451Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:14.9938559Z               "line": 446
2026-06-21T08:38:14.9938664Z             }
2026-06-21T08:38:14.9938775Z           ]
2026-06-21T08:38:14.9938878Z         },
2026-06-21T08:38:14.9939085Z         "int": {
2026-06-21T08:38:14.9939207Z           "complete": false,
2026-06-21T08:38:14.9939320Z           "evidence": []
2026-06-21T08:38:14.9939426Z         },
2026-06-21T08:38:14.9939534Z         "unit": {
2026-06-21T08:38:14.9939642Z           "complete": true,
2026-06-21T08:38:14.9939758Z           "evidence": [
2026-06-21T08:38:14.9939853Z             {
2026-06-21T08:38:14.9940001Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:14.9940106Z               "line": 910
2026-06-21T08:38:14.9940215Z             }
2026-06-21T08:38:14.9940320Z           ]
2026-06-21T08:38:14.9940425Z         }
2026-06-21T08:38:14.9940521Z       }
2026-06-21T08:38:14.9940635Z     },
2026-06-21T08:38:14.9940735Z     {
2026-06-21T08:38:14.9940897Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T08:38:14.9941046Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T08:38:14.9941164Z       "requiredStages": [
2026-06-21T08:38:14.9941274Z         "impl",
2026-06-21T08:38:14.9941379Z         "unit"
2026-06-21T08:38:14.9941488Z       ],
2026-06-21T08:38:14.9941589Z       "stages": {
2026-06-21T08:38:14.9941699Z         "doc": {
2026-06-21T08:38:14.9941817Z           "complete": false,
2026-06-21T08:38:14.9942047Z           "evidence": []
2026-06-21T08:38:14.9942155Z         },
2026-06-21T08:38:14.9942356Z         "impl": {
2026-06-21T08:38:14.9942479Z           "complete": true,
2026-06-21T08:38:14.9942589Z           "evidence": [
2026-06-21T08:38:14.9942699Z             {
2026-06-21T08:38:14.9942841Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9942957Z               "line": 116
2026-06-21T08:38:14.9943066Z             },
2026-06-21T08:38:14.9943170Z             {
2026-06-21T08:38:14.9943319Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9943428Z               "line": 211
2026-06-21T08:38:14.9943533Z             }
2026-06-21T08:38:14.9943634Z           ]
2026-06-21T08:38:14.9943743Z         },
2026-06-21T08:38:14.9943853Z         "int": {
2026-06-21T08:38:14.9943963Z           "complete": false,
2026-06-21T08:38:14.9944091Z           "evidence": []
2026-06-21T08:38:14.9944187Z         },
2026-06-21T08:38:14.9944315Z         "unit": {
2026-06-21T08:38:14.9944433Z           "complete": true,
2026-06-21T08:38:14.9944538Z           "evidence": [
2026-06-21T08:38:14.9944656Z             {
2026-06-21T08:38:14.9944802Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9944909Z               "line": 388
2026-06-21T08:38:14.9945018Z             },
2026-06-21T08:38:14.9945122Z             {
2026-06-21T08:38:14.9945265Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:14.9945374Z               "line": 469
2026-06-21T08:38:14.9945485Z             }
2026-06-21T08:38:14.9945590Z           ]
2026-06-21T08:38:14.9945694Z         }
2026-06-21T08:38:14.9945796Z       }
2026-06-21T08:38:14.9945909Z     },
2026-06-21T08:38:14.9946013Z     {
2026-06-21T08:38:14.9946162Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T08:38:14.9947291Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T08:38:14.9947424Z       "requiredStages": [
2026-06-21T08:38:14.9947532Z         "impl",
2026-06-21T08:38:14.9947631Z         "unit"
2026-06-21T08:38:14.9947737Z       ],
2026-06-21T08:38:14.9947852Z       "stages": {
2026-06-21T08:38:14.9947956Z         "doc": {
2026-06-21T08:38:14.9948076Z           "complete": true,
2026-06-21T08:38:14.9948190Z           "evidence": [
2026-06-21T08:38:14.9948289Z             {
2026-06-21T08:38:14.9948420Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:14.9948542Z               "line": 206
2026-06-21T08:38:14.9948643Z             }
2026-06-21T08:38:14.9948748Z           ]
2026-06-21T08:38:14.9948857Z         },
2026-06-21T08:38:14.9949030Z         "impl": {
2026-06-21T08:38:14.9949147Z           "complete": true,
2026-06-21T08:38:14.9949263Z           "evidence": [
2026-06-21T08:38:14.9949378Z             {
2026-06-21T08:38:14.9949529Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9949650Z               "line": 691
2026-06-21T08:38:14.9949749Z             },
2026-06-21T08:38:14.9949853Z             {
2026-06-21T08:38:14.9950005Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9950122Z               "line": 791
2026-06-21T08:38:14.9950226Z             },
2026-06-21T08:38:14.9950333Z             {
2026-06-21T08:38:14.9950470Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9950594Z               "line": 1120
2026-06-21T08:38:14.9950695Z             },
2026-06-21T08:38:14.9950799Z             {
2026-06-21T08:38:14.9950953Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:14.9951062Z               "line": 184
2026-06-21T08:38:14.9951166Z             }
2026-06-21T08:38:14.9951268Z           ]
2026-06-21T08:38:14.9951495Z         },
2026-06-21T08:38:14.9951597Z         "int": {
2026-06-21T08:38:14.9951724Z           "complete": false,
2026-06-21T08:38:14.9951940Z           "evidence": []
2026-06-21T08:38:14.9954852Z         },
2026-06-21T08:38:14.9955003Z         "unit": {
2026-06-21T08:38:14.9955122Z           "complete": true,
2026-06-21T08:38:14.9955234Z           "evidence": [
2026-06-21T08:38:14.9955334Z             {
2026-06-21T08:38:14.9955507Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:14.9955629Z               "line": 1169
2026-06-21T08:38:14.9955731Z             },
2026-06-21T08:38:14.9955840Z             {
2026-06-21T08:38:14.9955997Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T08:38:14.9956108Z               "line": 44
2026-06-21T08:38:14.9956211Z             },
2026-06-21T08:38:14.9956317Z             {
2026-06-21T08:38:14.9956470Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T08:38:14.9956578Z               "line": 52
2026-06-21T08:38:14.9956708Z             },
2026-06-21T08:38:14.9956812Z             {
2026-06-21T08:38:14.9956961Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T08:38:14.9957075Z               "line": 57
2026-06-21T08:38:14.9957180Z             },
2026-06-21T08:38:14.9957290Z             {
2026-06-21T08:38:14.9957451Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T08:38:14.9957571Z               "line": 54
2026-06-21T08:38:14.9957667Z             }
2026-06-21T08:38:14.9957771Z           ]
2026-06-21T08:38:14.9957874Z         }
2026-06-21T08:38:14.9957980Z       }
2026-06-21T08:38:14.9958088Z     },
2026-06-21T08:38:14.9958187Z     {
2026-06-21T08:38:14.9958350Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T08:38:14.9958598Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T08:38:14.9958717Z       "requiredStages": [
2026-06-21T08:38:14.9958825Z         "impl",
2026-06-21T08:38:14.9958932Z         "unit"
2026-06-21T08:38:14.9959140Z       ],
2026-06-21T08:38:14.9959246Z       "stages": {
2026-06-21T08:38:14.9959351Z         "doc": {
2026-06-21T08:38:14.9959465Z           "complete": false,
2026-06-21T08:38:14.9959585Z           "evidence": []
2026-06-21T08:38:14.9959684Z         },
2026-06-21T08:38:14.9959789Z         "impl": {
2026-06-21T08:38:14.9959909Z           "complete": true,
2026-06-21T08:38:14.9960013Z           "evidence": [
2026-06-21T08:38:14.9960123Z             {
2026-06-21T08:38:14.9960267Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9960389Z               "line": 26
2026-06-21T08:38:14.9960494Z             },
2026-06-21T08:38:14.9960603Z             {
2026-06-21T08:38:14.9960749Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9960864Z               "line": 135
2026-06-21T08:38:14.9960974Z             },
2026-06-21T08:38:14.9961073Z             {
2026-06-21T08:38:14.9961226Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T08:38:14.9961349Z               "line": 26
2026-06-21T08:38:14.9961455Z             },
2026-06-21T08:38:14.9961555Z             {
2026-06-21T08:38:14.9961702Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T08:38:14.9961813Z               "line": 237
2026-06-21T08:38:14.9961917Z             }
2026-06-21T08:38:14.9962027Z           ]
2026-06-21T08:38:14.9962128Z         },
2026-06-21T08:38:14.9962236Z         "int": {
2026-06-21T08:38:14.9962361Z           "complete": false,
2026-06-21T08:38:14.9962472Z           "evidence": []
2026-06-21T08:38:14.9962579Z         },
2026-06-21T08:38:14.9962685Z         "unit": {
2026-06-21T08:38:14.9962811Z           "complete": true,
2026-06-21T08:38:14.9962918Z           "evidence": [
2026-06-21T08:38:14.9963029Z             {
2026-06-21T08:38:14.9963176Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9963275Z               "line": 161
2026-06-21T08:38:14.9963390Z             },
2026-06-21T08:38:14.9963628Z             {
2026-06-21T08:38:14.9963781Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9963975Z               "line": 170
2026-06-21T08:38:14.9964087Z             },
2026-06-21T08:38:14.9964196Z             {
2026-06-21T08:38:14.9964339Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9964444Z               "line": 179
2026-06-21T08:38:14.9964548Z             },
2026-06-21T08:38:14.9964654Z             {
2026-06-21T08:38:14.9964791Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9964901Z               "line": 190
2026-06-21T08:38:14.9965003Z             },
2026-06-21T08:38:14.9965106Z             {
2026-06-21T08:38:14.9965249Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9965360Z               "line": 199
2026-06-21T08:38:14.9965468Z             },
2026-06-21T08:38:14.9965568Z             {
2026-06-21T08:38:14.9965710Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9965837Z               "line": 216
2026-06-21T08:38:14.9965942Z             },
2026-06-21T08:38:14.9966048Z             {
2026-06-21T08:38:14.9966194Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T08:38:14.9966310Z               "line": 242
2026-06-21T08:38:14.9966419Z             },
2026-06-21T08:38:14.9966514Z             {
2026-06-21T08:38:14.9966658Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9966771Z               "line": 295
2026-06-21T08:38:14.9966882Z             },
2026-06-21T08:38:14.9966987Z             {
2026-06-21T08:38:14.9967134Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:14.9967245Z               "line": 244
2026-06-21T08:38:14.9967344Z             },
2026-06-21T08:38:14.9967449Z             {
2026-06-21T08:38:14.9967593Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T08:38:14.9967706Z               "line": 265
2026-06-21T08:38:14.9967801Z             },
2026-06-21T08:38:14.9967912Z             {
2026-06-21T08:38:14.9968064Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T08:38:14.9968174Z               "line": 293
2026-06-21T08:38:14.9968284Z             },
2026-06-21T08:38:14.9968383Z             {
2026-06-21T08:38:14.9968535Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T08:38:14.9968643Z               "line": 317
2026-06-21T08:38:14.9968742Z             },
2026-06-21T08:38:14.9968853Z             {
2026-06-21T08:38:14.9969095Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T08:38:14.9969201Z               "line": 327
2026-06-21T08:38:14.9969292Z             },
2026-06-21T08:38:14.9969414Z             {
2026-06-21T08:38:14.9969558Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:14.9969667Z               "line": 540
2026-06-21T08:38:14.9969767Z             }
2026-06-21T08:38:14.9969869Z           ]
2026-06-21T08:38:14.9969978Z         }
2026-06-21T08:38:14.9970078Z       }
2026-06-21T08:38:14.9970188Z     },
2026-06-21T08:38:14.9970287Z     {
2026-06-21T08:38:14.9970451Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T08:38:14.9975267Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T08:38:14.9975638Z       "requiredStages": [],
2026-06-21T08:38:14.9975752Z       "stages": {
2026-06-21T08:38:14.9975858Z         "doc": {
2026-06-21T08:38:14.9975977Z           "complete": false,
2026-06-21T08:38:14.9976099Z           "evidence": []
2026-06-21T08:38:14.9976209Z         },
2026-06-21T08:38:14.9976303Z         "impl": {
2026-06-21T08:38:14.9976440Z           "complete": false,
2026-06-21T08:38:14.9976560Z           "evidence": []
2026-06-21T08:38:14.9976660Z         },
2026-06-21T08:38:14.9976773Z         "int": {
2026-06-21T08:38:14.9976889Z           "complete": false,
2026-06-21T08:38:14.9977003Z           "evidence": []
2026-06-21T08:38:14.9977102Z         },
2026-06-21T08:38:14.9977208Z         "unit": {
2026-06-21T08:38:14.9977317Z           "complete": false,
2026-06-21T08:38:14.9977432Z           "evidence": []
2026-06-21T08:38:14.9977528Z         }
2026-06-21T08:38:14.9977632Z       }
2026-06-21T08:38:14.9977737Z     },
2026-06-21T08:38:14.9977838Z     {
2026-06-21T08:38:14.9977975Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T08:38:14.9979650Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T08:38:14.9979795Z       "requiredStages": [
2026-06-21T08:38:14.9979898Z         "impl",
2026-06-21T08:38:14.9979999Z         "unit",
2026-06-21T08:38:14.9980104Z         "int"
2026-06-21T08:38:14.9980213Z       ],
2026-06-21T08:38:14.9980319Z       "stages": {
2026-06-21T08:38:14.9980424Z         "doc": {
2026-06-21T08:38:14.9980533Z           "complete": false,
2026-06-21T08:38:14.9980652Z           "evidence": []
2026-06-21T08:38:14.9980753Z         },
2026-06-21T08:38:14.9980862Z         "impl": {
2026-06-21T08:38:14.9980982Z           "complete": true,
2026-06-21T08:38:14.9981082Z           "evidence": [
2026-06-21T08:38:14.9981201Z             {
2026-06-21T08:38:14.9981359Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9981477Z               "line": 538
2026-06-21T08:38:14.9981581Z             },
2026-06-21T08:38:14.9981681Z             {
2026-06-21T08:38:14.9981831Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:14.9981946Z               "line": 625
2026-06-21T08:38:14.9982042Z             },
2026-06-21T08:38:14.9982146Z             {
2026-06-21T08:38:14.9982323Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T08:38:14.9982433Z               "line": 21
2026-06-21T08:38:14.9982542Z             }
2026-06-21T08:38:14.9982643Z           ]
2026-06-21T08:38:14.9982742Z         },
2026-06-21T08:38:14.9982851Z         "int": {
2026-06-21T08:38:14.9982967Z           "complete": true,
2026-06-21T08:38:14.9983066Z           "evidence": [
2026-06-21T08:38:14.9983166Z             {
2026-06-21T08:38:14.9983343Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T08:38:14.9983572Z               "line": 236
2026-06-21T08:38:14.9983767Z             },
2026-06-21T08:38:14.9983869Z             {
2026-06-21T08:38:14.9984038Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T08:38:14.9984154Z               "line": 396
2026-06-21T08:38:14.9984255Z             },
2026-06-21T08:38:14.9984362Z             {
2026-06-21T08:38:14.9984539Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:14.9984654Z               "line": 1496
2026-06-21T08:38:14.9984758Z             },
2026-06-21T08:38:14.9984858Z             {
2026-06-21T08:38:14.9985034Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:14.9985154Z               "line": 1648
2026-06-21T08:38:14.9985254Z             }
2026-06-21T08:38:14.9985358Z           ]
2026-06-21T08:38:14.9985464Z         },
2026-06-21T08:38:14.9985555Z         "unit": {
2026-06-21T08:38:14.9985673Z           "complete": true,
2026-06-21T08:38:14.9985784Z           "evidence": [
2026-06-21T08:38:14.9985893Z             {
2026-06-21T08:38:14.9986055Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:14.9986171Z               "line": 887
2026-06-21T08:38:14.9986278Z             }
2026-06-21T08:38:14.9986379Z           ]
2026-06-21T08:38:14.9986486Z         }
2026-06-21T08:38:14.9986583Z       }
2026-06-21T08:38:14.9986688Z     },
2026-06-21T08:38:14.9986793Z     {
2026-06-21T08:38:14.9986948Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T08:38:14.9987125Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T08:38:14.9987248Z       "requiredStages": [
2026-06-21T08:38:14.9987358Z         "impl",
2026-06-21T08:38:14.9987459Z         "unit"
2026-06-21T08:38:14.9987563Z       ],
2026-06-21T08:38:14.9987667Z       "stages": {
2026-06-21T08:38:14.9987783Z         "doc": {
2026-06-21T08:38:14.9987896Z           "complete": false,
2026-06-21T08:38:14.9988017Z           "evidence": []
2026-06-21T08:38:14.9988121Z         },
2026-06-21T08:38:14.9988226Z         "impl": {
2026-06-21T08:38:14.9988355Z           "complete": true,
2026-06-21T08:38:14.9988469Z           "evidence": [
2026-06-21T08:38:14.9988574Z             {
2026-06-21T08:38:14.9988718Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:14.9988836Z               "line": 25
2026-06-21T08:38:14.9989033Z             },
2026-06-21T08:38:14.9989131Z             {
2026-06-21T08:38:14.9989266Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9989381Z               "line": 26
2026-06-21T08:38:14.9989489Z             },
2026-06-21T08:38:14.9989588Z             {
2026-06-21T08:38:14.9989730Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9989839Z               "line": 159
2026-06-21T08:38:14.9989948Z             }
2026-06-21T08:38:14.9990054Z           ]
2026-06-21T08:38:14.9990158Z         },
2026-06-21T08:38:14.9990263Z         "int": {
2026-06-21T08:38:14.9990378Z           "complete": false,
2026-06-21T08:38:14.9990502Z           "evidence": []
2026-06-21T08:38:14.9990603Z         },
2026-06-21T08:38:14.9990702Z         "unit": {
2026-06-21T08:38:14.9990830Z           "complete": true,
2026-06-21T08:38:14.9990937Z           "evidence": [
2026-06-21T08:38:14.9991041Z             {
2026-06-21T08:38:14.9991179Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:14.9991298Z               "line": 188
2026-06-21T08:38:14.9991403Z             },
2026-06-21T08:38:14.9991508Z             {
2026-06-21T08:38:14.9991651Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:14.9991766Z               "line": 240
2026-06-21T08:38:14.9991871Z             },
2026-06-21T08:38:14.9991971Z             {
2026-06-21T08:38:14.9992121Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:14.9992232Z               "line": 186
2026-06-21T08:38:14.9992339Z             }
2026-06-21T08:38:14.9992568Z           ]
2026-06-21T08:38:14.9992673Z         }
2026-06-21T08:38:14.9992777Z       }
2026-06-21T08:38:14.9992874Z     },
2026-06-21T08:38:14.9993072Z     {
2026-06-21T08:38:14.9993207Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T08:38:14.9993411Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T08:38:14.9993536Z       "requiredStages": [
2026-06-21T08:38:14.9993651Z         "impl",
2026-06-21T08:38:14.9993750Z         "unit"
2026-06-21T08:38:14.9993847Z       ],
2026-06-21T08:38:14.9993956Z       "stages": {
2026-06-21T08:38:14.9994060Z         "doc": {
2026-06-21T08:38:14.9994185Z           "complete": false,
2026-06-21T08:38:14.9994304Z           "evidence": []
2026-06-21T08:38:14.9994399Z         },
2026-06-21T08:38:14.9994509Z         "impl": {
2026-06-21T08:38:14.9994628Z           "complete": true,
2026-06-21T08:38:14.9994739Z           "evidence": [
2026-06-21T08:38:14.9994834Z             {
2026-06-21T08:38:14.9994979Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9995103Z               "line": 48
2026-06-21T08:38:14.9995214Z             },
2026-06-21T08:38:14.9995327Z             {
2026-06-21T08:38:14.9995472Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9995580Z               "line": 55
2026-06-21T08:38:14.9995685Z             },
2026-06-21T08:38:14.9995791Z             {
2026-06-21T08:38:14.9995937Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9996039Z               "line": 74
2026-06-21T08:38:14.9996143Z             },
2026-06-21T08:38:14.9996233Z             {
2026-06-21T08:38:14.9996377Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9996491Z               "line": 91
2026-06-21T08:38:14.9996600Z             }
2026-06-21T08:38:14.9996702Z           ]
2026-06-21T08:38:14.9996801Z         },
2026-06-21T08:38:14.9996910Z         "int": {
2026-06-21T08:38:14.9997026Z           "complete": false,
2026-06-21T08:38:14.9997144Z           "evidence": []
2026-06-21T08:38:14.9997252Z         },
2026-06-21T08:38:14.9997353Z         "unit": {
2026-06-21T08:38:14.9997479Z           "complete": true,
2026-06-21T08:38:14.9997588Z           "evidence": [
2026-06-21T08:38:14.9997695Z             {
2026-06-21T08:38:14.9997837Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9997956Z               "line": 149
2026-06-21T08:38:14.9998061Z             },
2026-06-21T08:38:14.9998166Z             {
2026-06-21T08:38:14.9998315Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9998429Z               "line": 166
2026-06-21T08:38:14.9998528Z             },
2026-06-21T08:38:14.9998625Z             {
2026-06-21T08:38:14.9998772Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9998876Z               "line": 176
2026-06-21T08:38:14.9999043Z             },
2026-06-21T08:38:14.9999143Z             {
2026-06-21T08:38:14.9999288Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9999406Z               "line": 194
2026-06-21T08:38:14.9999511Z             },
2026-06-21T08:38:14.9999631Z             {
2026-06-21T08:38:14.9999768Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:14.9999879Z               "line": 207
2026-06-21T08:38:14.9999983Z             }
2026-06-21T08:38:15.0000092Z           ]
2026-06-21T08:38:15.0000201Z         }
2026-06-21T08:38:15.0000305Z       }
2026-06-21T08:38:15.0000408Z     },
2026-06-21T08:38:15.0000509Z     {
2026-06-21T08:38:15.0000657Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T08:38:15.0000886Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T08:38:15.0001004Z       "requiredStages": [
2026-06-21T08:38:15.0001119Z         "impl",
2026-06-21T08:38:15.0001220Z         "unit"
2026-06-21T08:38:15.0001324Z       ],
2026-06-21T08:38:15.0001434Z       "stages": {
2026-06-21T08:38:15.0001544Z         "doc": {
2026-06-21T08:38:15.0001672Z           "complete": false,
2026-06-21T08:38:15.0001896Z           "evidence": []
2026-06-21T08:38:15.0002001Z         },
2026-06-21T08:38:15.0002197Z         "impl": {
2026-06-21T08:38:15.0002326Z           "complete": true,
2026-06-21T08:38:15.0002427Z           "evidence": [
2026-06-21T08:38:15.0002531Z             {
2026-06-21T08:38:15.0002691Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0002797Z               "line": 466
2026-06-21T08:38:15.0002904Z             },
2026-06-21T08:38:15.0002994Z             {
2026-06-21T08:38:15.0003148Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0003262Z               "line": 26
2026-06-21T08:38:15.0003371Z             }
2026-06-21T08:38:15.0003482Z           ]
2026-06-21T08:38:15.0003585Z         },
2026-06-21T08:38:15.0003691Z         "int": {
2026-06-21T08:38:15.0003805Z           "complete": false,
2026-06-21T08:38:15.0003919Z           "evidence": []
2026-06-21T08:38:15.0004025Z         },
2026-06-21T08:38:15.0004134Z         "unit": {
2026-06-21T08:38:15.0004263Z           "complete": true,
2026-06-21T08:38:15.0004369Z           "evidence": [
2026-06-21T08:38:15.0004482Z             {
2026-06-21T08:38:15.0004625Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0004745Z               "line": 150
2026-06-21T08:38:15.0004849Z             },
2026-06-21T08:38:15.0004960Z             {
2026-06-21T08:38:15.0005107Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0005202Z               "line": 208
2026-06-21T08:38:15.0005308Z             }
2026-06-21T08:38:15.0005412Z           ]
2026-06-21T08:38:15.0005516Z         }
2026-06-21T08:38:15.0005616Z       }
2026-06-21T08:38:15.0005722Z     },
2026-06-21T08:38:15.0005826Z     {
2026-06-21T08:38:15.0005979Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T08:38:15.0015076Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T08:38:15.0015520Z       "requiredStages": [
2026-06-21T08:38:15.0015629Z         "impl",
2026-06-21T08:38:15.0015743Z         "unit",
2026-06-21T08:38:15.0015854Z         "int"
2026-06-21T08:38:15.0015963Z       ],
2026-06-21T08:38:15.0016071Z       "stages": {
2026-06-21T08:38:15.0016180Z         "doc": {
2026-06-21T08:38:15.0016301Z           "complete": false,
2026-06-21T08:38:15.0016414Z           "evidence": []
2026-06-21T08:38:15.0016529Z         },
2026-06-21T08:38:15.0016634Z         "impl": {
2026-06-21T08:38:15.0016762Z           "complete": true,
2026-06-21T08:38:15.0016873Z           "evidence": [
2026-06-21T08:38:15.0016978Z             {
2026-06-21T08:38:15.0017139Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0017254Z               "line": 99
2026-06-21T08:38:15.0017363Z             },
2026-06-21T08:38:15.0017464Z             {
2026-06-21T08:38:15.0017611Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0017725Z               "line": 201
2026-06-21T08:38:15.0017831Z             }
2026-06-21T08:38:15.0017945Z           ]
2026-06-21T08:38:15.0018045Z         },
2026-06-21T08:38:15.0018151Z         "int": {
2026-06-21T08:38:15.0018269Z           "complete": true,
2026-06-21T08:38:15.0018387Z           "evidence": [
2026-06-21T08:38:15.0018492Z             {
2026-06-21T08:38:15.0018680Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.0018800Z               "line": 737
2026-06-21T08:38:15.0018905Z             }
2026-06-21T08:38:15.0019091Z           ]
2026-06-21T08:38:15.0019196Z         },
2026-06-21T08:38:15.0019310Z         "unit": {
2026-06-21T08:38:15.0019421Z           "complete": true,
2026-06-21T08:38:15.0019540Z           "evidence": [
2026-06-21T08:38:15.0019648Z             {
2026-06-21T08:38:15.0019788Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0019906Z               "line": 517
2026-06-21T08:38:15.0020001Z             },
2026-06-21T08:38:15.0020112Z             {
2026-06-21T08:38:15.0020254Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0020379Z               "line": 576
2026-06-21T08:38:15.0020488Z             }
2026-06-21T08:38:15.0020592Z           ]
2026-06-21T08:38:15.0020704Z         }
2026-06-21T08:38:15.0020807Z       }
2026-06-21T08:38:15.0020917Z     },
2026-06-21T08:38:15.0021018Z     {
2026-06-21T08:38:15.0021164Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T08:38:15.0022511Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T08:38:15.0022631Z       "requiredStages": [
2026-06-21T08:38:15.0022740Z         "doc",
2026-06-21T08:38:15.0022845Z         "impl",
2026-06-21T08:38:15.0023064Z         "unit"
2026-06-21T08:38:15.0023174Z       ],
2026-06-21T08:38:15.0023285Z       "stages": {
2026-06-21T08:38:15.0023498Z         "doc": {
2026-06-21T08:38:15.0023600Z           "complete": true,
2026-06-21T08:38:15.0023717Z           "evidence": [
2026-06-21T08:38:15.0023821Z             {
2026-06-21T08:38:15.0023964Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0024081Z               "line": 214
2026-06-21T08:38:15.0024186Z             }
2026-06-21T08:38:15.0024297Z           ]
2026-06-21T08:38:15.0024396Z         },
2026-06-21T08:38:15.0024501Z         "impl": {
2026-06-21T08:38:15.0024606Z           "complete": true,
2026-06-21T08:38:15.0024725Z           "evidence": [
2026-06-21T08:38:15.0024835Z             {
2026-06-21T08:38:15.0024983Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0025092Z               "line": 56
2026-06-21T08:38:15.0025198Z             },
2026-06-21T08:38:15.0025302Z             {
2026-06-21T08:38:15.0025450Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0025560Z               "line": 580
2026-06-21T08:38:15.0025674Z             },
2026-06-21T08:38:15.0025775Z             {
2026-06-21T08:38:15.0025931Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0026037Z               "line": 36
2026-06-21T08:38:15.0026133Z             },
2026-06-21T08:38:15.0026241Z             {
2026-06-21T08:38:15.0026405Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0026514Z               "line": 59
2026-06-21T08:38:15.0026617Z             },
2026-06-21T08:38:15.0026727Z             {
2026-06-21T08:38:15.0026875Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0026993Z               "line": 83
2026-06-21T08:38:15.0027094Z             },
2026-06-21T08:38:15.0027195Z             {
2026-06-21T08:38:15.0027341Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0027452Z               "line": 140
2026-06-21T08:38:15.0027557Z             },
2026-06-21T08:38:15.0027661Z             {
2026-06-21T08:38:15.0027814Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0027933Z               "line": 159
2026-06-21T08:38:15.0028019Z             },
2026-06-21T08:38:15.0028134Z             {
2026-06-21T08:38:15.0028276Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0028387Z               "line": 384
2026-06-21T08:38:15.0028495Z             },
2026-06-21T08:38:15.0028596Z             {
2026-06-21T08:38:15.0028749Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0028862Z               "line": 535
2026-06-21T08:38:15.0029038Z             },
2026-06-21T08:38:15.0029141Z             {
2026-06-21T08:38:15.0029288Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0029399Z               "line": 581
2026-06-21T08:38:15.0029504Z             },
2026-06-21T08:38:15.0029612Z             {
2026-06-21T08:38:15.0029756Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0029870Z               "line": 300
2026-06-21T08:38:15.0029985Z             },
2026-06-21T08:38:15.0030085Z             {
2026-06-21T08:38:15.0030213Z               "path": "crates/spt/src/main.rs",
2026-06-21T08:38:15.0030334Z               "line": 42
2026-06-21T08:38:15.0030443Z             }
2026-06-21T08:38:15.0030548Z           ]
2026-06-21T08:38:15.0030653Z         },
2026-06-21T08:38:15.0030758Z         "int": {
2026-06-21T08:38:15.0030881Z           "complete": false,
2026-06-21T08:38:15.0030987Z           "evidence": []
2026-06-21T08:38:15.0031091Z         },
2026-06-21T08:38:15.0031201Z         "unit": {
2026-06-21T08:38:15.0031325Z           "complete": true,
2026-06-21T08:38:15.0031435Z           "evidence": [
2026-06-21T08:38:15.0031535Z             {
2026-06-21T08:38:15.0031692Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0031795Z               "line": 813
2026-06-21T08:38:15.0032009Z             },
2026-06-21T08:38:15.0032117Z             {
2026-06-21T08:38:15.0032266Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0032484Z               "line": 854
2026-06-21T08:38:15.0032586Z             },
2026-06-21T08:38:15.0032695Z             {
2026-06-21T08:38:15.0032843Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0032967Z               "line": 928
2026-06-21T08:38:15.0033071Z             }
2026-06-21T08:38:15.0033167Z           ]
2026-06-21T08:38:15.0033276Z         }
2026-06-21T08:38:15.0033376Z       }
2026-06-21T08:38:15.0033482Z     },
2026-06-21T08:38:15.0033586Z     {
2026-06-21T08:38:15.0033744Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T08:38:15.0038637Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T08:38:15.0038827Z       "requiredStages": [
2026-06-21T08:38:15.0039023Z         "impl",
2026-06-21T08:38:15.0039122Z         "unit",
2026-06-21T08:38:15.0039223Z         "int"
2026-06-21T08:38:15.0039328Z       ],
2026-06-21T08:38:15.0039436Z       "stages": {
2026-06-21T08:38:15.0039536Z         "doc": {
2026-06-21T08:38:15.0039659Z           "complete": false,
2026-06-21T08:38:15.0039777Z           "evidence": []
2026-06-21T08:38:15.0039868Z         },
2026-06-21T08:38:15.0039983Z         "impl": {
2026-06-21T08:38:15.0040092Z           "complete": true,
2026-06-21T08:38:15.0040216Z           "evidence": [
2026-06-21T08:38:15.0040321Z             {
2026-06-21T08:38:15.0040473Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0040593Z               "line": 106
2026-06-21T08:38:15.0040692Z             }
2026-06-21T08:38:15.0040798Z           ]
2026-06-21T08:38:15.0040903Z         },
2026-06-21T08:38:15.0041003Z         "int": {
2026-06-21T08:38:15.0041112Z           "complete": true,
2026-06-21T08:38:15.0041232Z           "evidence": [
2026-06-21T08:38:15.0041346Z             {
2026-06-21T08:38:15.0041504Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T08:38:15.0041622Z               "line": 296
2026-06-21T08:38:15.0041727Z             }
2026-06-21T08:38:15.0041833Z           ]
2026-06-21T08:38:15.0041942Z         },
2026-06-21T08:38:15.0042047Z         "unit": {
2026-06-21T08:38:15.0042172Z           "complete": true,
2026-06-21T08:38:15.0042276Z           "evidence": [
2026-06-21T08:38:15.0042479Z             {
2026-06-21T08:38:15.0042635Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0042845Z               "line": 464
2026-06-21T08:38:15.0042945Z             }
2026-06-21T08:38:15.0043045Z           ]
2026-06-21T08:38:15.0043151Z         }
2026-06-21T08:38:15.0043259Z       }
2026-06-21T08:38:15.0043364Z     },
2026-06-21T08:38:15.0043465Z     {
2026-06-21T08:38:15.0043598Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T08:38:15.0046948Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T08:38:15.0047132Z       "requiredStages": [
2026-06-21T08:38:15.0047243Z         "impl",
2026-06-21T08:38:15.0047357Z         "unit",
2026-06-21T08:38:15.0047462Z         "int"
2026-06-21T08:38:15.0047563Z       ],
2026-06-21T08:38:15.0047667Z       "stages": {
2026-06-21T08:38:15.0047771Z         "doc": {
2026-06-21T08:38:15.0047900Z           "complete": false,
2026-06-21T08:38:15.0048028Z           "evidence": []
2026-06-21T08:38:15.0048137Z         },
2026-06-21T08:38:15.0048248Z         "impl": {
2026-06-21T08:38:15.0048380Z           "complete": true,
2026-06-21T08:38:15.0048491Z           "evidence": [
2026-06-21T08:38:15.0048596Z             {
2026-06-21T08:38:15.0048762Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0048868Z               "line": 123
2026-06-21T08:38:15.0049043Z             },
2026-06-21T08:38:15.0049145Z             {
2026-06-21T08:38:15.0049292Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T08:38:15.0049401Z               "line": 134
2026-06-21T08:38:15.0049508Z             }
2026-06-21T08:38:15.0049601Z           ]
2026-06-21T08:38:15.0049697Z         },
2026-06-21T08:38:15.0049798Z         "int": {
2026-06-21T08:38:15.0049916Z           "complete": true,
2026-06-21T08:38:15.0050025Z           "evidence": [
2026-06-21T08:38:15.0050125Z             {
2026-06-21T08:38:15.0050275Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.0050399Z               "line": 312
2026-06-21T08:38:15.0050505Z             },
2026-06-21T08:38:15.0050609Z             {
2026-06-21T08:38:15.0050752Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.0050872Z               "line": 525
2026-06-21T08:38:15.0050971Z             }
2026-06-21T08:38:15.0051072Z           ]
2026-06-21T08:38:15.0051177Z         },
2026-06-21T08:38:15.0051281Z         "unit": {
2026-06-21T08:38:15.0051407Z           "complete": true,
2026-06-21T08:38:15.0051516Z           "evidence": [
2026-06-21T08:38:15.0051625Z             {
2026-06-21T08:38:15.0051783Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0051896Z               "line": 250
2026-06-21T08:38:15.0052007Z             }
2026-06-21T08:38:15.0052112Z           ]
2026-06-21T08:38:15.0052221Z         }
2026-06-21T08:38:15.0052327Z       }
2026-06-21T08:38:15.0052431Z     },
2026-06-21T08:38:15.0052646Z     {
2026-06-21T08:38:15.0052802Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T08:38:15.0054544Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T08:38:15.0054802Z       "requiredStages": [
2026-06-21T08:38:15.0054913Z         "impl",
2026-06-21T08:38:15.0055012Z         "unit"
2026-06-21T08:38:15.0055117Z       ],
2026-06-21T08:38:15.0055228Z       "stages": {
2026-06-21T08:38:15.0055327Z         "doc": {
2026-06-21T08:38:15.0055449Z           "complete": false,
2026-06-21T08:38:15.0055564Z           "evidence": []
2026-06-21T08:38:15.0055663Z         },
2026-06-21T08:38:15.0055785Z         "impl": {
2026-06-21T08:38:15.0055895Z           "complete": true,
2026-06-21T08:38:15.0056006Z           "evidence": [
2026-06-21T08:38:15.0056114Z             {
2026-06-21T08:38:15.0056268Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0056377Z               "line": 31
2026-06-21T08:38:15.0056486Z             }
2026-06-21T08:38:15.0056597Z           ]
2026-06-21T08:38:15.0056701Z         },
2026-06-21T08:38:15.0056811Z         "int": {
2026-06-21T08:38:15.0056926Z           "complete": false,
2026-06-21T08:38:15.0057044Z           "evidence": []
2026-06-21T08:38:15.0057145Z         },
2026-06-21T08:38:15.0057255Z         "unit": {
2026-06-21T08:38:15.0057378Z           "complete": true,
2026-06-21T08:38:15.0057484Z           "evidence": [
2026-06-21T08:38:15.0057588Z             {
2026-06-21T08:38:15.0057741Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0057866Z               "line": 181
2026-06-21T08:38:15.0057974Z             }
2026-06-21T08:38:15.0058085Z           ]
2026-06-21T08:38:15.0058185Z         }
2026-06-21T08:38:15.0058288Z       }
2026-06-21T08:38:15.0058387Z     },
2026-06-21T08:38:15.0058489Z     {
2026-06-21T08:38:15.0061512Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T08:38:15.0061742Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T08:38:15.0061870Z       "requiredStages": [
2026-06-21T08:38:15.0061976Z         "impl",
2026-06-21T08:38:15.0062080Z         "unit"
2026-06-21T08:38:15.0062185Z       ],
2026-06-21T08:38:15.0062291Z       "stages": {
2026-06-21T08:38:15.0062399Z         "doc": {
2026-06-21T08:38:15.0062514Z           "complete": false,
2026-06-21T08:38:15.0062625Z           "evidence": []
2026-06-21T08:38:15.0062719Z         },
2026-06-21T08:38:15.0062819Z         "impl": {
2026-06-21T08:38:15.0062945Z           "complete": true,
2026-06-21T08:38:15.0063067Z           "evidence": [
2026-06-21T08:38:15.0063172Z             {
2026-06-21T08:38:15.0063344Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0063448Z               "line": 49
2026-06-21T08:38:15.0063557Z             },
2026-06-21T08:38:15.0063656Z             {
2026-06-21T08:38:15.0063816Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0063918Z               "line": 81
2026-06-21T08:38:15.0064018Z             }
2026-06-21T08:38:15.0064112Z           ]
2026-06-21T08:38:15.0064223Z         },
2026-06-21T08:38:15.0064328Z         "int": {
2026-06-21T08:38:15.0064436Z           "complete": false,
2026-06-21T08:38:15.0064548Z           "evidence": []
2026-06-21T08:38:15.0064652Z         },
2026-06-21T08:38:15.0064770Z         "unit": {
2026-06-21T08:38:15.0064876Z           "complete": true,
2026-06-21T08:38:15.0064995Z           "evidence": [
2026-06-21T08:38:15.0065095Z             {
2026-06-21T08:38:15.0065391Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0065511Z               "line": 156
2026-06-21T08:38:15.0065729Z             },
2026-06-21T08:38:15.0065835Z             {
2026-06-21T08:38:15.0065986Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0066105Z               "line": 173
2026-06-21T08:38:15.0066204Z             },
2026-06-21T08:38:15.0066308Z             {
2026-06-21T08:38:15.0066460Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0066571Z               "line": 196
2026-06-21T08:38:15.0066684Z             }
2026-06-21T08:38:15.0066785Z           ]
2026-06-21T08:38:15.0066885Z         }
2026-06-21T08:38:15.0066993Z       }
2026-06-21T08:38:15.0067095Z     },
2026-06-21T08:38:15.0067204Z     {
2026-06-21T08:38:15.0067357Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T08:38:15.0067562Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T08:38:15.0067676Z       "requiredStages": [
2026-06-21T08:38:15.0067791Z         "impl",
2026-06-21T08:38:15.0067901Z         "unit"
2026-06-21T08:38:15.0068010Z       ],
2026-06-21T08:38:15.0068120Z       "stages": {
2026-06-21T08:38:15.0068225Z         "doc": {
2026-06-21T08:38:15.0068350Z           "complete": false,
2026-06-21T08:38:15.0068458Z           "evidence": []
2026-06-21T08:38:15.0068563Z         },
2026-06-21T08:38:15.0068669Z         "impl": {
2026-06-21T08:38:15.0068783Z           "complete": true,
2026-06-21T08:38:15.0068886Z           "evidence": [
2026-06-21T08:38:15.0069054Z             {
2026-06-21T08:38:15.0069215Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0069330Z               "line": 120
2026-06-21T08:38:15.0069445Z             }
2026-06-21T08:38:15.0069544Z           ]
2026-06-21T08:38:15.0069645Z         },
2026-06-21T08:38:15.0069749Z         "int": {
2026-06-21T08:38:15.0069873Z           "complete": false,
2026-06-21T08:38:15.0069998Z           "evidence": []
2026-06-21T08:38:15.0070102Z         },
2026-06-21T08:38:15.0070212Z         "unit": {
2026-06-21T08:38:15.0070337Z           "complete": true,
2026-06-21T08:38:15.0070436Z           "evidence": [
2026-06-21T08:38:15.0070541Z             {
2026-06-21T08:38:15.0070689Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0070807Z               "line": 212
2026-06-21T08:38:15.0070914Z             },
2026-06-21T08:38:15.0071014Z             {
2026-06-21T08:38:15.0071173Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0071269Z               "line": 221
2026-06-21T08:38:15.0071382Z             },
2026-06-21T08:38:15.0071481Z             {
2026-06-21T08:38:15.0071635Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0071748Z               "line": 229
2026-06-21T08:38:15.0071844Z             },
2026-06-21T08:38:15.0071954Z             {
2026-06-21T08:38:15.0072096Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0072226Z               "line": 239
2026-06-21T08:38:15.0072321Z             },
2026-06-21T08:38:15.0072420Z             {
2026-06-21T08:38:15.0072570Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T08:38:15.0072679Z               "line": 249
2026-06-21T08:38:15.0072783Z             }
2026-06-21T08:38:15.0072889Z           ]
2026-06-21T08:38:15.0072998Z         }
2026-06-21T08:38:15.0073098Z       }
2026-06-21T08:38:15.0073204Z     },
2026-06-21T08:38:15.0073298Z     {
2026-06-21T08:38:15.0073447Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T08:38:15.0073646Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T08:38:15.0073762Z       "requiredStages": [
2026-06-21T08:38:15.0073867Z         "impl",
2026-06-21T08:38:15.0073960Z         "unit"
2026-06-21T08:38:15.0074064Z       ],
2026-06-21T08:38:15.0074175Z       "stages": {
2026-06-21T08:38:15.0074277Z         "doc": {
2026-06-21T08:38:15.0074406Z           "complete": false,
2026-06-21T08:38:15.0074625Z           "evidence": []
2026-06-21T08:38:15.0074730Z         },
2026-06-21T08:38:15.0074836Z         "impl": {
2026-06-21T08:38:15.0075040Z           "complete": true,
2026-06-21T08:38:15.0075145Z           "evidence": [
2026-06-21T08:38:15.0075245Z             {
2026-06-21T08:38:15.0075384Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.0075488Z               "line": 14
2026-06-21T08:38:15.0075598Z             },
2026-06-21T08:38:15.0075703Z             {
2026-06-21T08:38:15.0075836Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.0075941Z               "line": 63
2026-06-21T08:38:15.0076047Z             }
2026-06-21T08:38:15.0076165Z           ]
2026-06-21T08:38:15.0076266Z         },
2026-06-21T08:38:15.0076377Z         "int": {
2026-06-21T08:38:15.0076494Z           "complete": false,
2026-06-21T08:38:15.0076602Z           "evidence": []
2026-06-21T08:38:15.0076699Z         },
2026-06-21T08:38:15.0076806Z         "unit": {
2026-06-21T08:38:15.0076939Z           "complete": true,
2026-06-21T08:38:15.0077049Z           "evidence": [
2026-06-21T08:38:15.0077159Z             {
2026-06-21T08:38:15.0077301Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.0077412Z               "line": 164
2026-06-21T08:38:15.0077511Z             },
2026-06-21T08:38:15.0077611Z             {
2026-06-21T08:38:15.0077746Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.0077855Z               "line": 198
2026-06-21T08:38:15.0077961Z             },
2026-06-21T08:38:15.0078060Z             {
2026-06-21T08:38:15.0078207Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.0078313Z               "line": 220
2026-06-21T08:38:15.0078422Z             }
2026-06-21T08:38:15.0078532Z           ]
2026-06-21T08:38:15.0078633Z         }
2026-06-21T08:38:15.0078741Z       }
2026-06-21T08:38:15.0078841Z     },
2026-06-21T08:38:15.0079023Z     {
2026-06-21T08:38:15.0079152Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T08:38:15.0080568Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T08:38:15.0080701Z       "requiredStages": [],
2026-06-21T08:38:15.0080800Z       "stages": {
2026-06-21T08:38:15.0080901Z         "doc": {
2026-06-21T08:38:15.0081025Z           "complete": true,
2026-06-21T08:38:15.0081145Z           "evidence": [
2026-06-21T08:38:15.0081250Z             {
2026-06-21T08:38:15.0081391Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0081512Z               "line": 165
2026-06-21T08:38:15.0081616Z             }
2026-06-21T08:38:15.0081720Z           ]
2026-06-21T08:38:15.0081824Z         },
2026-06-21T08:38:15.0081942Z         "impl": {
2026-06-21T08:38:15.0082060Z           "complete": false,
2026-06-21T08:38:15.0082166Z           "evidence": []
2026-06-21T08:38:15.0082276Z         },
2026-06-21T08:38:15.0082380Z         "int": {
2026-06-21T08:38:15.0082496Z           "complete": false,
2026-06-21T08:38:15.0082605Z           "evidence": []
2026-06-21T08:38:15.0082709Z         },
2026-06-21T08:38:15.0082815Z         "unit": {
2026-06-21T08:38:15.0082929Z           "complete": false,
2026-06-21T08:38:15.0083048Z           "evidence": []
2026-06-21T08:38:15.0083149Z         }
2026-06-21T08:38:15.0083253Z       }
2026-06-21T08:38:15.0083357Z     },
2026-06-21T08:38:15.0083464Z     {
2026-06-21T08:38:15.0083610Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T08:38:15.0083848Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T08:38:15.0083978Z       "requiredStages": [
2026-06-21T08:38:15.0084084Z         "impl",
2026-06-21T08:38:15.0084297Z         "unit"
2026-06-21T08:38:15.0084403Z       ],
2026-06-21T08:38:15.0084506Z       "stages": {
2026-06-21T08:38:15.0084692Z         "doc": {
2026-06-21T08:38:15.0084805Z           "complete": false,
2026-06-21T08:38:15.0084913Z           "evidence": []
2026-06-21T08:38:15.0085019Z         },
2026-06-21T08:38:15.0085129Z         "impl": {
2026-06-21T08:38:15.0085247Z           "complete": true,
2026-06-21T08:38:15.0085367Z           "evidence": [
2026-06-21T08:38:15.0085476Z             {
2026-06-21T08:38:15.0085620Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0085724Z               "line": 76
2026-06-21T08:38:15.0085828Z             },
2026-06-21T08:38:15.0085934Z             {
2026-06-21T08:38:15.0086077Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0086187Z               "line": 167
2026-06-21T08:38:15.0086293Z             },
2026-06-21T08:38:15.0086391Z             {
2026-06-21T08:38:15.0086530Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0086646Z               "line": 233
2026-06-21T08:38:15.0086739Z             },
2026-06-21T08:38:15.0086854Z             {
2026-06-21T08:38:15.0087003Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0087121Z               "line": 272
2026-06-21T08:38:15.0087220Z             }
2026-06-21T08:38:15.0087329Z           ]
2026-06-21T08:38:15.0087433Z         },
2026-06-21T08:38:15.0087547Z         "int": {
2026-06-21T08:38:15.0087658Z           "complete": false,
2026-06-21T08:38:15.0087771Z           "evidence": []
2026-06-21T08:38:15.0087876Z         },
2026-06-21T08:38:15.0087986Z         "unit": {
2026-06-21T08:38:15.0088105Z           "complete": true,
2026-06-21T08:38:15.0088206Z           "evidence": [
2026-06-21T08:38:15.0088315Z             {
2026-06-21T08:38:15.0088452Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0088563Z               "line": 321
2026-06-21T08:38:15.0088668Z             },
2026-06-21T08:38:15.0088777Z             {
2026-06-21T08:38:15.0088916Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0089101Z               "line": 329
2026-06-21T08:38:15.0089193Z             },
2026-06-21T08:38:15.0089301Z             {
2026-06-21T08:38:15.0089455Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0089574Z               "line": 356
2026-06-21T08:38:15.0089679Z             },
2026-06-21T08:38:15.0089784Z             {
2026-06-21T08:38:15.0089926Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0090039Z               "line": 395
2026-06-21T08:38:15.0090140Z             },
2026-06-21T08:38:15.0090246Z             {
2026-06-21T08:38:15.0090393Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0090498Z               "line": 406
2026-06-21T08:38:15.0090607Z             },
2026-06-21T08:38:15.0090707Z             {
2026-06-21T08:38:15.0090851Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0090970Z               "line": 418
2026-06-21T08:38:15.0091070Z             },
2026-06-21T08:38:15.0091180Z             {
2026-06-21T08:38:15.0091327Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T08:38:15.0091438Z               "line": 442
2026-06-21T08:38:15.0091542Z             }
2026-06-21T08:38:15.0091651Z           ]
2026-06-21T08:38:15.0091757Z         }
2026-06-21T08:38:15.0091861Z       }
2026-06-21T08:38:15.0091966Z     },
2026-06-21T08:38:15.0092067Z     {
2026-06-21T08:38:15.0092199Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T08:38:15.0092371Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T08:38:15.0092502Z       "requiredStages": [
2026-06-21T08:38:15.0092611Z         "impl",
2026-06-21T08:38:15.0092711Z         "int"
2026-06-21T08:38:15.0092808Z       ],
2026-06-21T08:38:15.0092911Z       "stages": {
2026-06-21T08:38:15.0093017Z         "doc": {
2026-06-21T08:38:15.0093132Z           "complete": false,
2026-06-21T08:38:15.0093240Z           "evidence": []
2026-06-21T08:38:15.0093451Z         },
2026-06-21T08:38:15.0093560Z         "impl": {
2026-06-21T08:38:15.0093775Z           "complete": true,
2026-06-21T08:38:15.0093884Z           "evidence": [
2026-06-21T08:38:15.0093990Z             {
2026-06-21T08:38:15.0094128Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0094247Z               "line": 22
2026-06-21T08:38:15.0094339Z             }
2026-06-21T08:38:15.0094442Z           ]
2026-06-21T08:38:15.0094548Z         },
2026-06-21T08:38:15.0094653Z         "int": {
2026-06-21T08:38:15.0094771Z           "complete": true,
2026-06-21T08:38:15.0094882Z           "evidence": [
2026-06-21T08:38:15.0094987Z             {
2026-06-21T08:38:15.0095147Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T08:38:15.0095256Z               "line": 18
2026-06-21T08:38:15.0095365Z             }
2026-06-21T08:38:15.0095454Z           ]
2026-06-21T08:38:15.0095555Z         },
2026-06-21T08:38:15.0095660Z         "unit": {
2026-06-21T08:38:15.0095793Z           "complete": false,
2026-06-21T08:38:15.0095909Z           "evidence": []
2026-06-21T08:38:15.0096018Z         }
2026-06-21T08:38:15.0096127Z       }
2026-06-21T08:38:15.0096218Z     },
2026-06-21T08:38:15.0096323Z     {
2026-06-21T08:38:15.0096465Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T08:38:15.0096694Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T08:38:15.0096814Z       "requiredStages": [
2026-06-21T08:38:15.0096914Z         "impl",
2026-06-21T08:38:15.0097019Z         "unit"
2026-06-21T08:38:15.0097119Z       ],
2026-06-21T08:38:15.0097229Z       "stages": {
2026-06-21T08:38:15.0097333Z         "doc": {
2026-06-21T08:38:15.0097454Z           "complete": false,
2026-06-21T08:38:15.0097568Z           "evidence": []
2026-06-21T08:38:15.0097666Z         },
2026-06-21T08:38:15.0097776Z         "impl": {
2026-06-21T08:38:15.0097885Z           "complete": true,
2026-06-21T08:38:15.0097993Z           "evidence": [
2026-06-21T08:38:15.0098102Z             {
2026-06-21T08:38:15.0098251Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0098360Z               "line": 465
2026-06-21T08:38:15.0098466Z             },
2026-06-21T08:38:15.0098561Z             {
2026-06-21T08:38:15.0098707Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0098818Z               "line": 27
2026-06-21T08:38:15.0098913Z             }
2026-06-21T08:38:15.0099095Z           ]
2026-06-21T08:38:15.0099194Z         },
2026-06-21T08:38:15.0099299Z         "int": {
2026-06-21T08:38:15.0099420Z           "complete": false,
2026-06-21T08:38:15.0099528Z           "evidence": []
2026-06-21T08:38:15.0099633Z         },
2026-06-21T08:38:15.0099739Z         "unit": {
2026-06-21T08:38:15.0099861Z           "complete": true,
2026-06-21T08:38:15.0099971Z           "evidence": [
2026-06-21T08:38:15.0100073Z             {
2026-06-21T08:38:15.0100219Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0100340Z               "line": 990
2026-06-21T08:38:15.0100435Z             },
2026-06-21T08:38:15.0100533Z             {
2026-06-21T08:38:15.0100681Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0100787Z               "line": 181
2026-06-21T08:38:15.0100891Z             }
2026-06-21T08:38:15.0100996Z           ]
2026-06-21T08:38:15.0101096Z         }
2026-06-21T08:38:15.0101201Z       }
2026-06-21T08:38:15.0101301Z     },
2026-06-21T08:38:15.0101411Z     {
2026-06-21T08:38:15.0101558Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T08:38:15.0101750Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T08:38:15.0101877Z       "requiredStages": [
2026-06-21T08:38:15.0101984Z         "impl",
2026-06-21T08:38:15.0102083Z         "unit"
2026-06-21T08:38:15.0102192Z       ],
2026-06-21T08:38:15.0102304Z       "stages": {
2026-06-21T08:38:15.0102407Z         "doc": {
2026-06-21T08:38:15.0102521Z           "complete": false,
2026-06-21T08:38:15.0102764Z           "evidence": []
2026-06-21T08:38:15.0102868Z         },
2026-06-21T08:38:15.0103048Z         "impl": {
2026-06-21T08:38:15.0103157Z           "complete": true,
2026-06-21T08:38:15.0103272Z           "evidence": [
2026-06-21T08:38:15.0103373Z             {
2026-06-21T08:38:15.0103515Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:15.0103621Z               "line": 73
2026-06-21T08:38:15.0103725Z             },
2026-06-21T08:38:15.0103839Z             {
2026-06-21T08:38:15.0103987Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:15.0104105Z               "line": 972
2026-06-21T08:38:15.0104207Z             },
2026-06-21T08:38:15.0104316Z             {
2026-06-21T08:38:15.0104464Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0104564Z               "line": 20
2026-06-21T08:38:15.0104674Z             },
2026-06-21T08:38:15.0104773Z             {
2026-06-21T08:38:15.0104931Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0105050Z               "line": 100
2026-06-21T08:38:15.0105161Z             },
2026-06-21T08:38:15.0105265Z             {
2026-06-21T08:38:15.0105408Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:15.0105528Z               "line": 603
2026-06-21T08:38:15.0105636Z             },
2026-06-21T08:38:15.0105740Z             {
2026-06-21T08:38:15.0105892Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T08:38:15.0106005Z               "line": 68
2026-06-21T08:38:15.0106115Z             },
2026-06-21T08:38:15.0106211Z             {
2026-06-21T08:38:15.0106372Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T08:38:15.0106483Z               "line": 80
2026-06-21T08:38:15.0106583Z             }
2026-06-21T08:38:15.0106682Z           ]
2026-06-21T08:38:15.0106783Z         },
2026-06-21T08:38:15.0106888Z         "int": {
2026-06-21T08:38:15.0106996Z           "complete": true,
2026-06-21T08:38:15.0107122Z           "evidence": [
2026-06-21T08:38:15.0107226Z             {
2026-06-21T08:38:15.0107374Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T08:38:15.0107498Z               "line": 44
2026-06-21T08:38:15.0107598Z             }
2026-06-21T08:38:15.0107704Z           ]
2026-06-21T08:38:15.0107808Z         },
2026-06-21T08:38:15.0107922Z         "unit": {
2026-06-21T08:38:15.0108038Z           "complete": true,
2026-06-21T08:38:15.0108156Z           "evidence": [
2026-06-21T08:38:15.0108250Z             {
2026-06-21T08:38:15.0108403Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:15.0108515Z               "line": 1181
2026-06-21T08:38:15.0108614Z             },
2026-06-21T08:38:15.0108725Z             {
2026-06-21T08:38:15.0108872Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:15.0109078Z               "line": 1197
2026-06-21T08:38:15.0109191Z             },
2026-06-21T08:38:15.0109292Z             {
2026-06-21T08:38:15.0109478Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0109592Z               "line": 2399
2026-06-21T08:38:15.0109698Z             },
2026-06-21T08:38:15.0109798Z             {
2026-06-21T08:38:15.0109946Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0110060Z               "line": 152
2026-06-21T08:38:15.0110164Z             },
2026-06-21T08:38:15.0110270Z             {
2026-06-21T08:38:15.0110412Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0110522Z               "line": 175
2026-06-21T08:38:15.0110629Z             },
2026-06-21T08:38:15.0110736Z             {
2026-06-21T08:38:15.0110881Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0110986Z               "line": 186
2026-06-21T08:38:15.0111098Z             },
2026-06-21T08:38:15.0111203Z             {
2026-06-21T08:38:15.0111347Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0111580Z               "line": 202
2026-06-21T08:38:15.0111685Z             },
2026-06-21T08:38:15.0111799Z             {
2026-06-21T08:38:15.0112028Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T08:38:15.0112147Z               "line": 216
2026-06-21T08:38:15.0112248Z             },
2026-06-21T08:38:15.0112352Z             {
2026-06-21T08:38:15.0112510Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T08:38:15.0112624Z               "line": 137
2026-06-21T08:38:15.0112734Z             },
2026-06-21T08:38:15.0112840Z             {
2026-06-21T08:38:15.0112976Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0113086Z               "line": 8152
2026-06-21T08:38:15.0113193Z             },
2026-06-21T08:38:15.0113301Z             {
2026-06-21T08:38:15.0113438Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T08:38:15.0113548Z               "line": 30
2026-06-21T08:38:15.0113651Z             },
2026-06-21T08:38:15.0113765Z             {
2026-06-21T08:38:15.0113919Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T08:38:15.0114022Z               "line": 73
2026-06-21T08:38:15.0114137Z             }
2026-06-21T08:38:15.0114247Z           ]
2026-06-21T08:38:15.0114355Z         }
2026-06-21T08:38:15.0114457Z       }
2026-06-21T08:38:15.0114562Z     },
2026-06-21T08:38:15.0114666Z     {
2026-06-21T08:38:15.0114819Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T08:38:15.0118929Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T08:38:15.0119175Z       "requiredStages": [
2026-06-21T08:38:15.0119290Z         "impl",
2026-06-21T08:38:15.0119395Z         "unit",
2026-06-21T08:38:15.0119504Z         "int"
2026-06-21T08:38:15.0119615Z       ],
2026-06-21T08:38:15.0119719Z       "stages": {
2026-06-21T08:38:15.0119814Z         "doc": {
2026-06-21T08:38:15.0119934Z           "complete": false,
2026-06-21T08:38:15.0120052Z           "evidence": []
2026-06-21T08:38:15.0120152Z         },
2026-06-21T08:38:15.0120263Z         "impl": {
2026-06-21T08:38:15.0120381Z           "complete": true,
2026-06-21T08:38:15.0120491Z           "evidence": [
2026-06-21T08:38:15.0120601Z             {
2026-06-21T08:38:15.0120758Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0120878Z               "line": 510
2026-06-21T08:38:15.0120977Z             },
2026-06-21T08:38:15.0121078Z             {
2026-06-21T08:38:15.0121227Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0121340Z               "line": 704
2026-06-21T08:38:15.0121446Z             }
2026-06-21T08:38:15.0121546Z           ]
2026-06-21T08:38:15.0121658Z         },
2026-06-21T08:38:15.0121763Z         "int": {
2026-06-21T08:38:15.0122001Z           "complete": true,
2026-06-21T08:38:15.0122107Z           "evidence": [
2026-06-21T08:38:15.0122216Z             {
2026-06-21T08:38:15.0122475Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0122588Z               "line": 1119
2026-06-21T08:38:15.0122693Z             },
2026-06-21T08:38:15.0122794Z             {
2026-06-21T08:38:15.0122955Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T08:38:15.0123065Z               "line": 312
2026-06-21T08:38:15.0123175Z             }
2026-06-21T08:38:15.0123279Z           ]
2026-06-21T08:38:15.0123380Z         },
2026-06-21T08:38:15.0123494Z         "unit": {
2026-06-21T08:38:15.0123613Z           "complete": true,
2026-06-21T08:38:15.0123739Z           "evidence": [
2026-06-21T08:38:15.0123846Z             {
2026-06-21T08:38:15.0123993Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0124112Z               "line": 821
2026-06-21T08:38:15.0124220Z             }
2026-06-21T08:38:15.0124335Z           ]
2026-06-21T08:38:15.0124436Z         }
2026-06-21T08:38:15.0124549Z       }
2026-06-21T08:38:15.0124659Z     },
2026-06-21T08:38:15.0124765Z     {
2026-06-21T08:38:15.0124902Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T08:38:15.0125188Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T08:38:15.0125318Z       "requiredStages": [
2026-06-21T08:38:15.0125417Z         "impl",
2026-06-21T08:38:15.0125531Z         "unit"
2026-06-21T08:38:15.0125637Z       ],
2026-06-21T08:38:15.0125746Z       "stages": {
2026-06-21T08:38:15.0125851Z         "doc": {
2026-06-21T08:38:15.0125972Z           "complete": true,
2026-06-21T08:38:15.0126089Z           "evidence": [
2026-06-21T08:38:15.0126194Z             {
2026-06-21T08:38:15.0126333Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0126451Z               "line": 133
2026-06-21T08:38:15.0126558Z             }
2026-06-21T08:38:15.0126663Z           ]
2026-06-21T08:38:15.0126775Z         },
2026-06-21T08:38:15.0126889Z         "impl": {
2026-06-21T08:38:15.0126998Z           "complete": true,
2026-06-21T08:38:15.0127107Z           "evidence": [
2026-06-21T08:38:15.0127211Z             {
2026-06-21T08:38:15.0127360Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.0127468Z               "line": 65
2026-06-21T08:38:15.0127570Z             },
2026-06-21T08:38:15.0127679Z             {
2026-06-21T08:38:15.0127816Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0127937Z               "line": 17
2026-06-21T08:38:15.0128041Z             },
2026-06-21T08:38:15.0128156Z             {
2026-06-21T08:38:15.0128313Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:15.0128417Z               "line": 146
2026-06-21T08:38:15.0128524Z             },
2026-06-21T08:38:15.0128632Z             {
2026-06-21T08:38:15.0128780Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0128886Z               "line": 310
2026-06-21T08:38:15.0129061Z             },
2026-06-21T08:38:15.0129172Z             {
2026-06-21T08:38:15.0129332Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0129456Z               "line": 441
2026-06-21T08:38:15.0129561Z             },
2026-06-21T08:38:15.0129663Z             {
2026-06-21T08:38:15.0129807Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:15.0129922Z               "line": 32
2026-06-21T08:38:15.0130025Z             },
2026-06-21T08:38:15.0130122Z             {
2026-06-21T08:38:15.0130256Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0130369Z               "line": 1283
2026-06-21T08:38:15.0130475Z             },
2026-06-21T08:38:15.0130575Z             {
2026-06-21T08:38:15.0130713Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0130832Z               "line": 6161
2026-06-21T08:38:15.0130937Z             },
2026-06-21T08:38:15.0131041Z             {
2026-06-21T08:38:15.0131294Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0131405Z               "line": 6443
2026-06-21T08:38:15.0131613Z             }
2026-06-21T08:38:15.0131715Z           ]
2026-06-21T08:38:15.0131824Z         },
2026-06-21T08:38:15.0131924Z         "int": {
2026-06-21T08:38:15.0132054Z           "complete": false,
2026-06-21T08:38:15.0132162Z           "evidence": []
2026-06-21T08:38:15.0132271Z         },
2026-06-21T08:38:15.0132376Z         "unit": {
2026-06-21T08:38:15.0132505Z           "complete": true,
2026-06-21T08:38:15.0132609Z           "evidence": [
2026-06-21T08:38:15.0132715Z             {
2026-06-21T08:38:15.0132862Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0132972Z               "line": 94
2026-06-21T08:38:15.0133077Z             },
2026-06-21T08:38:15.0133181Z             {
2026-06-21T08:38:15.0133316Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0133439Z               "line": 111
2026-06-21T08:38:15.0133548Z             },
2026-06-21T08:38:15.0133650Z             {
2026-06-21T08:38:15.0133792Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0133897Z               "line": 124
2026-06-21T08:38:15.0134003Z             },
2026-06-21T08:38:15.0134096Z             {
2026-06-21T08:38:15.0134235Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0134346Z               "line": 134
2026-06-21T08:38:15.0134440Z             },
2026-06-21T08:38:15.0134534Z             {
2026-06-21T08:38:15.0134668Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0134790Z               "line": 144
2026-06-21T08:38:15.0134890Z             },
2026-06-21T08:38:15.0134996Z             {
2026-06-21T08:38:15.0135123Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T08:38:15.0135233Z               "line": 156
2026-06-21T08:38:15.0135343Z             },
2026-06-21T08:38:15.0135452Z             {
2026-06-21T08:38:15.0135615Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0135738Z               "line": 746
2026-06-21T08:38:15.0135844Z             },
2026-06-21T08:38:15.0135949Z             {
2026-06-21T08:38:15.0136110Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:15.0136212Z               "line": 309
2026-06-21T08:38:15.0136320Z             }
2026-06-21T08:38:15.0136425Z           ]
2026-06-21T08:38:15.0136532Z         }
2026-06-21T08:38:15.0136635Z       }
2026-06-21T08:38:15.0136740Z     },
2026-06-21T08:38:15.0136846Z     {
2026-06-21T08:38:15.0136978Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T08:38:15.0137146Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T08:38:15.0137269Z       "requiredStages": [
2026-06-21T08:38:15.0137378Z         "impl",
2026-06-21T08:38:15.0137493Z         "unit"
2026-06-21T08:38:15.0137586Z       ],
2026-06-21T08:38:15.0137695Z       "stages": {
2026-06-21T08:38:15.0137800Z         "doc": {
2026-06-21T08:38:15.0137934Z           "complete": false,
2026-06-21T08:38:15.0138062Z           "evidence": []
2026-06-21T08:38:15.0138163Z         },
2026-06-21T08:38:15.0138268Z         "impl": {
2026-06-21T08:38:15.0138396Z           "complete": true,
2026-06-21T08:38:15.0138516Z           "evidence": [
2026-06-21T08:38:15.0138620Z             {
2026-06-21T08:38:15.0138769Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.0138892Z               "line": 128
2026-06-21T08:38:15.0139084Z             }
2026-06-21T08:38:15.0139174Z           ]
2026-06-21T08:38:15.0139278Z         },
2026-06-21T08:38:15.0139404Z         "int": {
2026-06-21T08:38:15.0139526Z           "complete": false,
2026-06-21T08:38:15.0139645Z           "evidence": []
2026-06-21T08:38:15.0139751Z         },
2026-06-21T08:38:15.0139860Z         "unit": {
2026-06-21T08:38:15.0139983Z           "complete": true,
2026-06-21T08:38:15.0140092Z           "evidence": [
2026-06-21T08:38:15.0140195Z             {
2026-06-21T08:38:15.0140338Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.0140576Z               "line": 205
2026-06-21T08:38:15.0140677Z             }
2026-06-21T08:38:15.0140877Z           ]
2026-06-21T08:38:15.0140982Z         }
2026-06-21T08:38:15.0141087Z       }
2026-06-21T08:38:15.0141187Z     },
2026-06-21T08:38:15.0141292Z     {
2026-06-21T08:38:15.0141444Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T08:38:15.0141626Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T08:38:15.0141750Z       "requiredStages": [
2026-06-21T08:38:15.0141854Z         "impl",
2026-06-21T08:38:15.0141951Z         "unit"
2026-06-21T08:38:15.0142064Z       ],
2026-06-21T08:38:15.0142174Z       "stages": {
2026-06-21T08:38:15.0142285Z         "doc": {
2026-06-21T08:38:15.0142412Z           "complete": false,
2026-06-21T08:38:15.0142517Z           "evidence": []
2026-06-21T08:38:15.0142628Z         },
2026-06-21T08:38:15.0142736Z         "impl": {
2026-06-21T08:38:15.0142859Z           "complete": true,
2026-06-21T08:38:15.0142975Z           "evidence": [
2026-06-21T08:38:15.0143075Z             {
2026-06-21T08:38:15.0143227Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0143336Z               "line": 367
2026-06-21T08:38:15.0143441Z             },
2026-06-21T08:38:15.0143547Z             {
2026-06-21T08:38:15.0143690Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0143803Z               "line": 378
2026-06-21T08:38:15.0143909Z             },
2026-06-21T08:38:15.0144018Z             {
2026-06-21T08:38:15.0144156Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0146971Z               "line": 396
2026-06-21T08:38:15.0147101Z             }
2026-06-21T08:38:15.0147205Z           ]
2026-06-21T08:38:15.0147310Z         },
2026-06-21T08:38:15.0147411Z         "int": {
2026-06-21T08:38:15.0147538Z           "complete": false,
2026-06-21T08:38:15.0147644Z           "evidence": []
2026-06-21T08:38:15.0147755Z         },
2026-06-21T08:38:15.0147857Z         "unit": {
2026-06-21T08:38:15.0147995Z           "complete": true,
2026-06-21T08:38:15.0148109Z           "evidence": [
2026-06-21T08:38:15.0148227Z             {
2026-06-21T08:38:15.0148370Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0148485Z               "line": 420
2026-06-21T08:38:15.0148584Z             },
2026-06-21T08:38:15.0148690Z             {
2026-06-21T08:38:15.0148832Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0149024Z               "line": 441
2026-06-21T08:38:15.0149128Z             },
2026-06-21T08:38:15.0149237Z             {
2026-06-21T08:38:15.0149372Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0149486Z               "line": 811
2026-06-21T08:38:15.0149590Z             },
2026-06-21T08:38:15.0149705Z             {
2026-06-21T08:38:15.0149843Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0149959Z               "line": 822
2026-06-21T08:38:15.0150063Z             },
2026-06-21T08:38:15.0150172Z             {
2026-06-21T08:38:15.0150312Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0150420Z               "line": 835
2026-06-21T08:38:15.0150519Z             }
2026-06-21T08:38:15.0150615Z           ]
2026-06-21T08:38:15.0150713Z         }
2026-06-21T08:38:15.0150817Z       }
2026-06-21T08:38:15.0150917Z     },
2026-06-21T08:38:15.0151018Z     {
2026-06-21T08:38:15.0151160Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T08:38:15.0158688Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T08:38:15.0159206Z       "requiredStages": [
2026-06-21T08:38:15.0159331Z         "impl",
2026-06-21T08:38:15.0159435Z         "unit",
2026-06-21T08:38:15.0159541Z         "int"
2026-06-21T08:38:15.0159640Z       ],
2026-06-21T08:38:15.0159754Z       "stages": {
2026-06-21T08:38:15.0159855Z         "doc": {
2026-06-21T08:38:15.0159979Z           "complete": false,
2026-06-21T08:38:15.0160108Z           "evidence": []
2026-06-21T08:38:15.0160209Z         },
2026-06-21T08:38:15.0160317Z         "impl": {
2026-06-21T08:38:15.0160422Z           "complete": true,
2026-06-21T08:38:15.0160533Z           "evidence": [
2026-06-21T08:38:15.0160641Z             {
2026-06-21T08:38:15.0160800Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0160919Z               "line": 335
2026-06-21T08:38:15.0161018Z             },
2026-06-21T08:38:15.0161127Z             {
2026-06-21T08:38:15.0161273Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0161382Z               "line": 762
2026-06-21T08:38:15.0161492Z             },
2026-06-21T08:38:15.0161598Z             {
2026-06-21T08:38:15.0161759Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0161869Z               "line": 1026
2026-06-21T08:38:15.0161973Z             }
2026-06-21T08:38:15.0162083Z           ]
2026-06-21T08:38:15.0162188Z         },
2026-06-21T08:38:15.0162298Z         "int": {
2026-06-21T08:38:15.0162408Z           "complete": true,
2026-06-21T08:38:15.0162522Z           "evidence": [
2026-06-21T08:38:15.0162627Z             {
2026-06-21T08:38:15.0162804Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.0162927Z               "line": 256
2026-06-21T08:38:15.0163032Z             },
2026-06-21T08:38:15.0163142Z             {
2026-06-21T08:38:15.0163313Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.0163424Z               "line": 382
2026-06-21T08:38:15.0163527Z             }
2026-06-21T08:38:15.0163638Z           ]
2026-06-21T08:38:15.0163744Z         },
2026-06-21T08:38:15.0163946Z         "unit": {
2026-06-21T08:38:15.0164071Z           "complete": true,
2026-06-21T08:38:15.0164181Z           "evidence": [
2026-06-21T08:38:15.0164381Z             {
2026-06-21T08:38:15.0164528Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0164652Z               "line": 2427
2026-06-21T08:38:15.0164758Z             },
2026-06-21T08:38:15.0164862Z             {
2026-06-21T08:38:15.0165006Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0165120Z               "line": 2485
2026-06-21T08:38:15.0165219Z             }
2026-06-21T08:38:15.0165326Z           ]
2026-06-21T08:38:15.0165425Z         }
2026-06-21T08:38:15.0165534Z       }
2026-06-21T08:38:15.0165636Z     },
2026-06-21T08:38:15.0165740Z     {
2026-06-21T08:38:15.0165907Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T08:38:15.0173191Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T08:38:15.0173421Z       "requiredStages": [
2026-06-21T08:38:15.0173525Z         "doc",
2026-06-21T08:38:15.0173636Z         "impl",
2026-06-21T08:38:15.0173740Z         "unit",
2026-06-21T08:38:15.0173835Z         "int"
2026-06-21T08:38:15.0173941Z       ],
2026-06-21T08:38:15.0174050Z       "stages": {
2026-06-21T08:38:15.0174150Z         "doc": {
2026-06-21T08:38:15.0174265Z           "complete": true,
2026-06-21T08:38:15.0174379Z           "evidence": [
2026-06-21T08:38:15.0174483Z             {
2026-06-21T08:38:15.0174626Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0174745Z               "line": 454
2026-06-21T08:38:15.0174844Z             }
2026-06-21T08:38:15.0174951Z           ]
2026-06-21T08:38:15.0175060Z         },
2026-06-21T08:38:15.0175284Z         "impl": {
2026-06-21T08:38:15.0175408Z           "complete": true,
2026-06-21T08:38:15.0175632Z           "evidence": [
2026-06-21T08:38:15.0175732Z             {
2026-06-21T08:38:15.0175886Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0175994Z               "line": 203
2026-06-21T08:38:15.0176104Z             },
2026-06-21T08:38:15.0176206Z             {
2026-06-21T08:38:15.0176356Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0176467Z               "line": 487
2026-06-21T08:38:15.0176572Z             },
2026-06-21T08:38:15.0176681Z             {
2026-06-21T08:38:15.0176832Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0176955Z               "line": 1822
2026-06-21T08:38:15.0177059Z             },
2026-06-21T08:38:15.0177159Z             {
2026-06-21T08:38:15.0177302Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:15.0177416Z               "line": 331
2026-06-21T08:38:15.0177532Z             }
2026-06-21T08:38:15.0177636Z           ]
2026-06-21T08:38:15.0177745Z         },
2026-06-21T08:38:15.0177842Z         "int": {
2026-06-21T08:38:15.0177965Z           "complete": true,
2026-06-21T08:38:15.0178070Z           "evidence": [
2026-06-21T08:38:15.0178176Z             {
2026-06-21T08:38:15.0178336Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.0178443Z               "line": 737
2026-06-21T08:38:15.0178556Z             },
2026-06-21T08:38:15.0178647Z             {
2026-06-21T08:38:15.0178796Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.0178904Z               "line": 854
2026-06-21T08:38:15.0179068Z             },
2026-06-21T08:38:15.0179167Z             {
2026-06-21T08:38:15.0179353Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.0179473Z               "line": 544
2026-06-21T08:38:15.0179575Z             },
2026-06-21T08:38:15.0179685Z             {
2026-06-21T08:38:15.0179860Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.0179983Z               "line": 1800
2026-06-21T08:38:15.0180089Z             },
2026-06-21T08:38:15.0180184Z             {
2026-06-21T08:38:15.0180356Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T08:38:15.0180460Z               "line": 266
2026-06-21T08:38:15.0180564Z             }
2026-06-21T08:38:15.0180666Z           ]
2026-06-21T08:38:15.0180766Z         },
2026-06-21T08:38:15.0180870Z         "unit": {
2026-06-21T08:38:15.0180990Z           "complete": true,
2026-06-21T08:38:15.0181109Z           "evidence": [
2026-06-21T08:38:15.0181204Z             {
2026-06-21T08:38:15.0181348Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:15.0181461Z               "line": 985
2026-06-21T08:38:15.0181557Z             },
2026-06-21T08:38:15.0181668Z             {
2026-06-21T08:38:15.0181804Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:15.0181925Z               "line": 1019
2026-06-21T08:38:15.0182030Z             }
2026-06-21T08:38:15.0182142Z           ]
2026-06-21T08:38:15.0182252Z         }
2026-06-21T08:38:15.0182352Z       }
2026-06-21T08:38:15.0182455Z     },
2026-06-21T08:38:15.0182559Z     {
2026-06-21T08:38:15.0182704Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T08:38:15.0183323Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T08:38:15.0183446Z       "requiredStages": [
2026-06-21T08:38:15.0183552Z         "impl",
2026-06-21T08:38:15.0183652Z         "unit"
2026-06-21T08:38:15.0183756Z       ],
2026-06-21T08:38:15.0183862Z       "stages": {
2026-06-21T08:38:15.0183966Z         "doc": {
2026-06-21T08:38:15.0184090Z           "complete": false,
2026-06-21T08:38:15.0184206Z           "evidence": []
2026-06-21T08:38:15.0184424Z         },
2026-06-21T08:38:15.0184530Z         "impl": {
2026-06-21T08:38:15.0184652Z           "complete": true,
2026-06-21T08:38:15.0184859Z           "evidence": [
2026-06-21T08:38:15.0184958Z             {
2026-06-21T08:38:15.0185114Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0185220Z               "line": 759
2026-06-21T08:38:15.0185329Z             }
2026-06-21T08:38:15.0185429Z           ]
2026-06-21T08:38:15.0185530Z         },
2026-06-21T08:38:15.0185639Z         "int": {
2026-06-21T08:38:15.0185763Z           "complete": false,
2026-06-21T08:38:15.0185882Z           "evidence": []
2026-06-21T08:38:15.0185987Z         },
2026-06-21T08:38:15.0186097Z         "unit": {
2026-06-21T08:38:15.0186211Z           "complete": true,
2026-06-21T08:38:15.0186330Z           "evidence": [
2026-06-21T08:38:15.0186436Z             {
2026-06-21T08:38:15.0186593Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0186702Z               "line": 873
2026-06-21T08:38:15.0186813Z             }
2026-06-21T08:38:15.0186921Z           ]
2026-06-21T08:38:15.0187027Z         }
2026-06-21T08:38:15.0187123Z       }
2026-06-21T08:38:15.0187226Z     },
2026-06-21T08:38:15.0187331Z     {
2026-06-21T08:38:15.0187492Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T08:38:15.0189962Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T08:38:15.0190113Z       "requiredStages": [
2026-06-21T08:38:15.0190226Z         "impl",
2026-06-21T08:38:15.0190321Z         "unit",
2026-06-21T08:38:15.0190429Z         "int"
2026-06-21T08:38:15.0190534Z       ],
2026-06-21T08:38:15.0190634Z       "stages": {
2026-06-21T08:38:15.0190735Z         "doc": {
2026-06-21T08:38:15.0190863Z           "complete": false,
2026-06-21T08:38:15.0190983Z           "evidence": []
2026-06-21T08:38:15.0191087Z         },
2026-06-21T08:38:15.0191192Z         "impl": {
2026-06-21T08:38:15.0191303Z           "complete": true,
2026-06-21T08:38:15.0191416Z           "evidence": [
2026-06-21T08:38:15.0191516Z             {
2026-06-21T08:38:15.0191669Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0191792Z               "line": 705
2026-06-21T08:38:15.0191899Z             }
2026-06-21T08:38:15.0192003Z           ]
2026-06-21T08:38:15.0192102Z         },
2026-06-21T08:38:15.0192209Z         "int": {
2026-06-21T08:38:15.0192327Z           "complete": true,
2026-06-21T08:38:15.0192432Z           "evidence": [
2026-06-21T08:38:15.0192533Z             {
2026-06-21T08:38:15.0192702Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T08:38:15.0192817Z               "line": 24
2026-06-21T08:38:15.0192917Z             }
2026-06-21T08:38:15.0193024Z           ]
2026-06-21T08:38:15.0193119Z         },
2026-06-21T08:38:15.0193225Z         "unit": {
2026-06-21T08:38:15.0193348Z           "complete": true,
2026-06-21T08:38:15.0193458Z           "evidence": [
2026-06-21T08:38:15.0193554Z             {
2026-06-21T08:38:15.0193706Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0193822Z               "line": 918
2026-06-21T08:38:15.0193926Z             }
2026-06-21T08:38:15.0194025Z           ]
2026-06-21T08:38:15.0194131Z         }
2026-06-21T08:38:15.0194345Z       }
2026-06-21T08:38:15.0194456Z     },
2026-06-21T08:38:15.0194545Z     {
2026-06-21T08:38:15.0194780Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T08:38:15.0198352Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T08:38:15.0198527Z       "requiredStages": [
2026-06-21T08:38:15.0198628Z         "impl",
2026-06-21T08:38:15.0198733Z         "unit",
2026-06-21T08:38:15.0198841Z         "int"
2026-06-21T08:38:15.0199009Z       ],
2026-06-21T08:38:15.0199114Z       "stages": {
2026-06-21T08:38:15.0199219Z         "doc": {
2026-06-21T08:38:15.0199338Z           "complete": false,
2026-06-21T08:38:15.0199452Z           "evidence": []
2026-06-21T08:38:15.0199553Z         },
2026-06-21T08:38:15.0199657Z         "impl": {
2026-06-21T08:38:15.0199777Z           "complete": true,
2026-06-21T08:38:15.0199878Z           "evidence": [
2026-06-21T08:38:15.0199991Z             {
2026-06-21T08:38:15.0200154Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0200273Z               "line": 391
2026-06-21T08:38:15.0200377Z             },
2026-06-21T08:38:15.0200479Z             {
2026-06-21T08:38:15.0200626Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0200748Z               "line": 343
2026-06-21T08:38:15.0200882Z             },
2026-06-21T08:38:15.0200975Z             {
2026-06-21T08:38:15.0201108Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0201229Z               "line": 1750
2026-06-21T08:38:15.0201333Z             },
2026-06-21T08:38:15.0201442Z             {
2026-06-21T08:38:15.0201567Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0201685Z               "line": 3191
2026-06-21T08:38:15.0201781Z             }
2026-06-21T08:38:15.0201886Z           ]
2026-06-21T08:38:15.0202000Z         },
2026-06-21T08:38:15.0202105Z         "int": {
2026-06-21T08:38:15.0202229Z           "complete": true,
2026-06-21T08:38:15.0202334Z           "evidence": [
2026-06-21T08:38:15.0202483Z             {
2026-06-21T08:38:15.0202663Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T08:38:15.0202774Z               "line": 353
2026-06-21T08:38:15.0202887Z             },
2026-06-21T08:38:15.0202992Z             {
2026-06-21T08:38:15.0203169Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T08:38:15.0203277Z               "line": 23
2026-06-21T08:38:15.0203382Z             }
2026-06-21T08:38:15.0203486Z           ]
2026-06-21T08:38:15.0203594Z         },
2026-06-21T08:38:15.0203751Z         "unit": {
2026-06-21T08:38:15.0203857Z           "complete": true,
2026-06-21T08:38:15.0203966Z           "evidence": [
2026-06-21T08:38:15.0204072Z             {
2026-06-21T08:38:15.0204214Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0204333Z               "line": 743
2026-06-21T08:38:15.0204548Z             },
2026-06-21T08:38:15.0204648Z             {
2026-06-21T08:38:15.0204786Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0204992Z               "line": 7863
2026-06-21T08:38:15.0205097Z             }
2026-06-21T08:38:15.0205201Z           ]
2026-06-21T08:38:15.0205317Z         }
2026-06-21T08:38:15.0205407Z       }
2026-06-21T08:38:15.0205516Z     },
2026-06-21T08:38:15.0205617Z     {
2026-06-21T08:38:15.0205768Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T08:38:15.0209149Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T08:38:15.0209312Z       "requiredStages": [
2026-06-21T08:38:15.0209411Z         "impl",
2026-06-21T08:38:15.0209546Z         "unit",
2026-06-21T08:38:15.0209659Z         "int"
2026-06-21T08:38:15.0209770Z       ],
2026-06-21T08:38:15.0209879Z       "stages": {
2026-06-21T08:38:15.0209984Z         "doc": {
2026-06-21T08:38:15.0210123Z           "complete": false,
2026-06-21T08:38:15.0210241Z           "evidence": []
2026-06-21T08:38:15.0210346Z         },
2026-06-21T08:38:15.0210457Z         "impl": {
2026-06-21T08:38:15.0210580Z           "complete": true,
2026-06-21T08:38:15.0210699Z           "evidence": [
2026-06-21T08:38:15.0210801Z             {
2026-06-21T08:38:15.0210962Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0211077Z               "line": 64
2026-06-21T08:38:15.0211181Z             },
2026-06-21T08:38:15.0211280Z             {
2026-06-21T08:38:15.0211433Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0211554Z               "line": 78
2026-06-21T08:38:15.0211649Z             },
2026-06-21T08:38:15.0211755Z             {
2026-06-21T08:38:15.0211898Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0212021Z               "line": 170
2026-06-21T08:38:15.0212122Z             },
2026-06-21T08:38:15.0212226Z             {
2026-06-21T08:38:15.0212389Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0212499Z               "line": 185
2026-06-21T08:38:15.0212617Z             },
2026-06-21T08:38:15.0212723Z             {
2026-06-21T08:38:15.0212875Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0212985Z               "line": 195
2026-06-21T08:38:15.0213095Z             },
2026-06-21T08:38:15.0213204Z             {
2026-06-21T08:38:15.0213353Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0213471Z               "line": 205
2026-06-21T08:38:15.0213571Z             },
2026-06-21T08:38:15.0213682Z             {
2026-06-21T08:38:15.0213832Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0213947Z               "line": 294
2026-06-21T08:38:15.0214051Z             },
2026-06-21T08:38:15.0214159Z             {
2026-06-21T08:38:15.0214307Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0214530Z               "line": 308
2026-06-21T08:38:15.0214637Z             },
2026-06-21T08:38:15.0214746Z             {
2026-06-21T08:38:15.0215018Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0215136Z               "line": 377
2026-06-21T08:38:15.0215238Z             },
2026-06-21T08:38:15.0215342Z             {
2026-06-21T08:38:15.0215494Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0215614Z               "line": 437
2026-06-21T08:38:15.0215723Z             },
2026-06-21T08:38:15.0215818Z             {
2026-06-21T08:38:15.0215971Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0216090Z               "line": 455
2026-06-21T08:38:15.0216201Z             }
2026-06-21T08:38:15.0216310Z           ]
2026-06-21T08:38:15.0216414Z         },
2026-06-21T08:38:15.0216525Z         "int": {
2026-06-21T08:38:15.0216643Z           "complete": true,
2026-06-21T08:38:15.0216766Z           "evidence": [
2026-06-21T08:38:15.0216866Z             {
2026-06-21T08:38:15.0217042Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T08:38:15.0217162Z               "line": 45
2026-06-21T08:38:15.0217272Z             },
2026-06-21T08:38:15.0217390Z             {
2026-06-21T08:38:15.0217549Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T08:38:15.0217663Z               "line": 354
2026-06-21T08:38:15.0217768Z             },
2026-06-21T08:38:15.0217878Z             {
2026-06-21T08:38:15.0218049Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T08:38:15.0218155Z               "line": 31
2026-06-21T08:38:15.0218268Z             }
2026-06-21T08:38:15.0218373Z           ]
2026-06-21T08:38:15.0218484Z         },
2026-06-21T08:38:15.0218587Z         "unit": {
2026-06-21T08:38:15.0218707Z           "complete": true,
2026-06-21T08:38:15.0218823Z           "evidence": [
2026-06-21T08:38:15.0218930Z             {
2026-06-21T08:38:15.0219186Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0219328Z               "line": 727
2026-06-21T08:38:15.0219443Z             }
2026-06-21T08:38:15.0219552Z           ]
2026-06-21T08:38:15.0219657Z         }
2026-06-21T08:38:15.0219763Z       }
2026-06-21T08:38:15.0219872Z     },
2026-06-21T08:38:15.0219972Z     {
2026-06-21T08:38:15.0220097Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T08:38:15.0220349Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T08:38:15.0220468Z       "requiredStages": [
2026-06-21T08:38:15.0220577Z         "impl",
2026-06-21T08:38:15.0220683Z         "unit"
2026-06-21T08:38:15.0220792Z       ],
2026-06-21T08:38:15.0220906Z       "stages": {
2026-06-21T08:38:15.0221008Z         "doc": {
2026-06-21T08:38:15.0221130Z           "complete": false,
2026-06-21T08:38:15.0221240Z           "evidence": []
2026-06-21T08:38:15.0221347Z         },
2026-06-21T08:38:15.0221449Z         "impl": {
2026-06-21T08:38:15.0221570Z           "complete": true,
2026-06-21T08:38:15.0221695Z           "evidence": [
2026-06-21T08:38:15.0221802Z             {
2026-06-21T08:38:15.0221949Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0222058Z               "line": 14
2026-06-21T08:38:15.0222167Z             },
2026-06-21T08:38:15.0222271Z             {
2026-06-21T08:38:15.0222420Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.0222538Z               "line": 566
2026-06-21T08:38:15.0222644Z             }
2026-06-21T08:38:15.0222749Z           ]
2026-06-21T08:38:15.0222853Z         },
2026-06-21T08:38:15.0222964Z         "int": {
2026-06-21T08:38:15.0223082Z           "complete": false,
2026-06-21T08:38:15.0223197Z           "evidence": []
2026-06-21T08:38:15.0223297Z         },
2026-06-21T08:38:15.0223402Z         "unit": {
2026-06-21T08:38:15.0223521Z           "complete": true,
2026-06-21T08:38:15.0223636Z           "evidence": [
2026-06-21T08:38:15.0223745Z             {
2026-06-21T08:38:15.0223988Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0224108Z               "line": 130
2026-06-21T08:38:15.0224313Z             },
2026-06-21T08:38:15.0224416Z             {
2026-06-21T08:38:15.0224559Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0224681Z               "line": 138
2026-06-21T08:38:15.0224790Z             },
2026-06-21T08:38:15.0224896Z             {
2026-06-21T08:38:15.0225039Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0225153Z               "line": 146
2026-06-21T08:38:15.0225259Z             },
2026-06-21T08:38:15.0225358Z             {
2026-06-21T08:38:15.0225483Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0225601Z               "line": 154
2026-06-21T08:38:15.0225706Z             },
2026-06-21T08:38:15.0225812Z             {
2026-06-21T08:38:15.0225954Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0226064Z               "line": 162
2026-06-21T08:38:15.0226188Z             },
2026-06-21T08:38:15.0226298Z             {
2026-06-21T08:38:15.0226442Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T08:38:15.0226550Z               "line": 170
2026-06-21T08:38:15.0226660Z             }
2026-06-21T08:38:15.0226771Z           ]
2026-06-21T08:38:15.0226879Z         }
2026-06-21T08:38:15.0226984Z       }
2026-06-21T08:38:15.0227086Z     },
2026-06-21T08:38:15.0227185Z     {
2026-06-21T08:38:15.0227312Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T08:38:15.0228223Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T08:38:15.0228342Z       "requiredStages": [
2026-06-21T08:38:15.0228452Z         "impl",
2026-06-21T08:38:15.0228552Z         "unit"
2026-06-21T08:38:15.0228652Z       ],
2026-06-21T08:38:15.0228772Z       "stages": {
2026-06-21T08:38:15.0228881Z         "doc": {
2026-06-21T08:38:15.0229077Z           "complete": false,
2026-06-21T08:38:15.0229210Z           "evidence": []
2026-06-21T08:38:15.0229316Z         },
2026-06-21T08:38:15.0229448Z         "impl": {
2026-06-21T08:38:15.0229566Z           "complete": true,
2026-06-21T08:38:15.0229686Z           "evidence": [
2026-06-21T08:38:15.0229793Z             {
2026-06-21T08:38:15.0229969Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0230085Z               "line": 34
2026-06-21T08:38:15.0230188Z             }
2026-06-21T08:38:15.0230294Z           ]
2026-06-21T08:38:15.0230389Z         },
2026-06-21T08:38:15.0230498Z         "int": {
2026-06-21T08:38:15.0230624Z           "complete": false,
2026-06-21T08:38:15.0230733Z           "evidence": []
2026-06-21T08:38:15.0230837Z         },
2026-06-21T08:38:15.0230943Z         "unit": {
2026-06-21T08:38:15.0231062Z           "complete": true,
2026-06-21T08:38:15.0231180Z           "evidence": [
2026-06-21T08:38:15.0231291Z             {
2026-06-21T08:38:15.0231466Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0231573Z               "line": 188
2026-06-21T08:38:15.0231681Z             },
2026-06-21T08:38:15.0231786Z             {
2026-06-21T08:38:15.0231959Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0232067Z               "line": 200
2026-06-21T08:38:15.0232178Z             },
2026-06-21T08:38:15.0232283Z             {
2026-06-21T08:38:15.0232443Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0232558Z               "line": 211
2026-06-21T08:38:15.0232665Z             },
2026-06-21T08:38:15.0232769Z             {
2026-06-21T08:38:15.0232937Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0233056Z               "line": 253
2026-06-21T08:38:15.0233156Z             },
2026-06-21T08:38:15.0233261Z             {
2026-06-21T08:38:15.0233538Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0233742Z               "line": 277
2026-06-21T08:38:15.0233853Z             },
2026-06-21T08:38:15.0233953Z             {
2026-06-21T08:38:15.0234130Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0234248Z               "line": 300
2026-06-21T08:38:15.0234343Z             },
2026-06-21T08:38:15.0234449Z             {
2026-06-21T08:38:15.0234610Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T08:38:15.0234731Z               "line": 316
2026-06-21T08:38:15.0234840Z             }
2026-06-21T08:38:15.0234948Z           ]
2026-06-21T08:38:15.0235053Z         }
2026-06-21T08:38:15.0235157Z       }
2026-06-21T08:38:15.0235265Z     },
2026-06-21T08:38:15.0235365Z     {
2026-06-21T08:38:15.0235509Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T08:38:15.0236081Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T08:38:15.0236219Z       "requiredStages": [
2026-06-21T08:38:15.0236329Z         "impl",
2026-06-21T08:38:15.0236419Z         "unit"
2026-06-21T08:38:15.0236524Z       ],
2026-06-21T08:38:15.0236633Z       "stages": {
2026-06-21T08:38:15.0236739Z         "doc": {
2026-06-21T08:38:15.0236867Z           "complete": false,
2026-06-21T08:38:15.0236972Z           "evidence": []
2026-06-21T08:38:15.0237077Z         },
2026-06-21T08:38:15.0237187Z         "impl": {
2026-06-21T08:38:15.0237312Z           "complete": true,
2026-06-21T08:38:15.0237416Z           "evidence": [
2026-06-21T08:38:15.0237516Z             {
2026-06-21T08:38:15.0237660Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0237773Z               "line": 29
2026-06-21T08:38:15.0237881Z             },
2026-06-21T08:38:15.0237987Z             {
2026-06-21T08:38:15.0238144Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0238253Z               "line": 174
2026-06-21T08:38:15.0238369Z             },
2026-06-21T08:38:15.0238478Z             {
2026-06-21T08:38:15.0238621Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0238736Z               "line": 194
2026-06-21T08:38:15.0238839Z             },
2026-06-21T08:38:15.0239036Z             {
2026-06-21T08:38:15.0239174Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0239289Z               "line": 222
2026-06-21T08:38:15.0239408Z             }
2026-06-21T08:38:15.0239513Z           ]
2026-06-21T08:38:15.0239628Z         },
2026-06-21T08:38:15.0239736Z         "int": {
2026-06-21T08:38:15.0239861Z           "complete": false,
2026-06-21T08:38:15.0239971Z           "evidence": []
2026-06-21T08:38:15.0240079Z         },
2026-06-21T08:38:15.0240179Z         "unit": {
2026-06-21T08:38:15.0240293Z           "complete": true,
2026-06-21T08:38:15.0240425Z           "evidence": [
2026-06-21T08:38:15.0240525Z             {
2026-06-21T08:38:15.0240668Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0240791Z               "line": 329
2026-06-21T08:38:15.0240903Z             },
2026-06-21T08:38:15.0241016Z             {
2026-06-21T08:38:15.0241150Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0241264Z               "line": 344
2026-06-21T08:38:15.0241368Z             },
2026-06-21T08:38:15.0241479Z             {
2026-06-21T08:38:15.0241612Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0241726Z               "line": 417
2026-06-21T08:38:15.0241837Z             },
2026-06-21T08:38:15.0241941Z             {
2026-06-21T08:38:15.0242094Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0242204Z               "line": 433
2026-06-21T08:38:15.0242313Z             },
2026-06-21T08:38:15.0242419Z             {
2026-06-21T08:38:15.0242670Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0242786Z               "line": 492
2026-06-21T08:38:15.0242984Z             },
2026-06-21T08:38:15.0243089Z             {
2026-06-21T08:38:15.0243235Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0243343Z               "line": 506
2026-06-21T08:38:15.0243450Z             },
2026-06-21T08:38:15.0243554Z             {
2026-06-21T08:38:15.0243697Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0243802Z               "line": 517
2026-06-21T08:38:15.0243906Z             },
2026-06-21T08:38:15.0244012Z             {
2026-06-21T08:38:15.0244155Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0244274Z               "line": 528
2026-06-21T08:38:15.0244370Z             }
2026-06-21T08:38:15.0244474Z           ]
2026-06-21T08:38:15.0244569Z         }
2026-06-21T08:38:15.0244675Z       }
2026-06-21T08:38:15.0244779Z     },
2026-06-21T08:38:15.0244898Z     {
2026-06-21T08:38:15.0245053Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T08:38:15.0245750Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T08:38:15.0245882Z       "requiredStages": [
2026-06-21T08:38:15.0245992Z         "impl",
2026-06-21T08:38:15.0246107Z         "unit"
2026-06-21T08:38:15.0246206Z       ],
2026-06-21T08:38:15.0246322Z       "stages": {
2026-06-21T08:38:15.0246431Z         "doc": {
2026-06-21T08:38:15.0246545Z           "complete": false,
2026-06-21T08:38:15.0246664Z           "evidence": []
2026-06-21T08:38:15.0246769Z         },
2026-06-21T08:38:15.0246884Z         "impl": {
2026-06-21T08:38:15.0246989Z           "complete": true,
2026-06-21T08:38:15.0247098Z           "evidence": [
2026-06-21T08:38:15.0247208Z             {
2026-06-21T08:38:15.0247365Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0247489Z               "line": 27
2026-06-21T08:38:15.0247591Z             },
2026-06-21T08:38:15.0247699Z             {
2026-06-21T08:38:15.0247853Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0247962Z               "line": 110
2026-06-21T08:38:15.0248071Z             },
2026-06-21T08:38:15.0248172Z             {
2026-06-21T08:38:15.0248333Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0248441Z               "line": 153
2026-06-21T08:38:15.0248547Z             },
2026-06-21T08:38:15.0248648Z             {
2026-06-21T08:38:15.0248804Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0248924Z               "line": 182
2026-06-21T08:38:15.0249104Z             },
2026-06-21T08:38:15.0249201Z             {
2026-06-21T08:38:15.0249390Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0249506Z               "line": 31
2026-06-21T08:38:15.0249653Z             },
2026-06-21T08:38:15.0249763Z             {
2026-06-21T08:38:15.0249944Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0250048Z               "line": 113
2026-06-21T08:38:15.0250159Z             },
2026-06-21T08:38:15.0250263Z             {
2026-06-21T08:38:15.0250431Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0250554Z               "line": 138
2026-06-21T08:38:15.0250658Z             }
2026-06-21T08:38:15.0250768Z           ]
2026-06-21T08:38:15.0250862Z         },
2026-06-21T08:38:15.0254082Z         "int": {
2026-06-21T08:38:15.0254242Z           "complete": false,
2026-06-21T08:38:15.0254358Z           "evidence": []
2026-06-21T08:38:15.0254471Z         },
2026-06-21T08:38:15.0254582Z         "unit": {
2026-06-21T08:38:15.0254701Z           "complete": true,
2026-06-21T08:38:15.0254814Z           "evidence": [
2026-06-21T08:38:15.0254916Z             {
2026-06-21T08:38:15.0255255Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0255377Z               "line": 261
2026-06-21T08:38:15.0255569Z             },
2026-06-21T08:38:15.0255664Z             {
2026-06-21T08:38:15.0255836Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0255946Z               "line": 276
2026-06-21T08:38:15.0256054Z             },
2026-06-21T08:38:15.0256153Z             {
2026-06-21T08:38:15.0256315Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0256433Z               "line": 293
2026-06-21T08:38:15.0256538Z             },
2026-06-21T08:38:15.0256644Z             {
2026-06-21T08:38:15.0256790Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0256910Z               "line": 310
2026-06-21T08:38:15.0257010Z             },
2026-06-21T08:38:15.0257109Z             {
2026-06-21T08:38:15.0257268Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0257391Z               "line": 327
2026-06-21T08:38:15.0257502Z             },
2026-06-21T08:38:15.0257611Z             {
2026-06-21T08:38:15.0257758Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.0257869Z               "line": 366
2026-06-21T08:38:15.0257973Z             },
2026-06-21T08:38:15.0258083Z             {
2026-06-21T08:38:15.0258254Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0258364Z               "line": 179
2026-06-21T08:38:15.0258466Z             },
2026-06-21T08:38:15.0258564Z             {
2026-06-21T08:38:15.0258728Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0258837Z               "line": 194
2026-06-21T08:38:15.0259035Z             },
2026-06-21T08:38:15.0259141Z             {
2026-06-21T08:38:15.0259316Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0259427Z               "line": 204
2026-06-21T08:38:15.0259551Z             },
2026-06-21T08:38:15.0259654Z             {
2026-06-21T08:38:15.0259818Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0259941Z               "line": 259
2026-06-21T08:38:15.0260037Z             },
2026-06-21T08:38:15.0260147Z             {
2026-06-21T08:38:15.0260313Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0260423Z               "line": 269
2026-06-21T08:38:15.0260528Z             },
2026-06-21T08:38:15.0260633Z             {
2026-06-21T08:38:15.0260804Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.0260914Z               "line": 283
2026-06-21T08:38:15.0261011Z             }
2026-06-21T08:38:15.0261114Z           ]
2026-06-21T08:38:15.0261223Z         }
2026-06-21T08:38:15.0261328Z       }
2026-06-21T08:38:15.0261432Z     },
2026-06-21T08:38:15.0261530Z     {
2026-06-21T08:38:15.0261665Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T08:38:15.0261892Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T08:38:15.0262013Z       "requiredStages": [],
2026-06-21T08:38:15.0262122Z       "stages": {
2026-06-21T08:38:15.0262231Z         "doc": {
2026-06-21T08:38:15.0262352Z           "complete": false,
2026-06-21T08:38:15.0262465Z           "evidence": []
2026-06-21T08:38:15.0262565Z         },
2026-06-21T08:38:15.0262666Z         "impl": {
2026-06-21T08:38:15.0262790Z           "complete": false,
2026-06-21T08:38:15.0262904Z           "evidence": []
2026-06-21T08:38:15.0263009Z         },
2026-06-21T08:38:15.0263114Z         "int": {
2026-06-21T08:38:15.0263239Z           "complete": false,
2026-06-21T08:38:15.0263352Z           "evidence": []
2026-06-21T08:38:15.0263457Z         },
2026-06-21T08:38:15.0263563Z         "unit": {
2026-06-21T08:38:15.0263676Z           "complete": false,
2026-06-21T08:38:15.0263786Z           "evidence": []
2026-06-21T08:38:15.0263883Z         }
2026-06-21T08:38:15.0264085Z       }
2026-06-21T08:38:15.0264181Z     },
2026-06-21T08:38:15.0264276Z     {
2026-06-21T08:38:15.0264431Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T08:38:15.0265451Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T08:38:15.0265585Z       "requiredStages": [
2026-06-21T08:38:15.0265680Z         "impl",
2026-06-21T08:38:15.0265791Z         "unit"
2026-06-21T08:38:15.0265896Z       ],
2026-06-21T08:38:15.0266009Z       "stages": {
2026-06-21T08:38:15.0266120Z         "doc": {
2026-06-21T08:38:15.0266229Z           "complete": false,
2026-06-21T08:38:15.0266343Z           "evidence": []
2026-06-21T08:38:15.0266440Z         },
2026-06-21T08:38:15.0266549Z         "impl": {
2026-06-21T08:38:15.0266667Z           "complete": true,
2026-06-21T08:38:15.0266781Z           "evidence": [
2026-06-21T08:38:15.0266898Z             {
2026-06-21T08:38:15.0267065Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0267190Z               "line": 26
2026-06-21T08:38:15.0267293Z             },
2026-06-21T08:38:15.0267399Z             {
2026-06-21T08:38:15.0267551Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0267665Z               "line": 95
2026-06-21T08:38:15.0267767Z             },
2026-06-21T08:38:15.0267862Z             {
2026-06-21T08:38:15.0268014Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0268114Z               "line": 166
2026-06-21T08:38:15.0268228Z             },
2026-06-21T08:38:15.0268333Z             {
2026-06-21T08:38:15.0268485Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0268595Z               "line": 19
2026-06-21T08:38:15.0268696Z             },
2026-06-21T08:38:15.0268800Z             {
2026-06-21T08:38:15.0269026Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0269143Z               "line": 50
2026-06-21T08:38:15.0269249Z             },
2026-06-21T08:38:15.0269360Z             {
2026-06-21T08:38:15.0269510Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T08:38:15.0269615Z               "line": 18
2026-06-21T08:38:15.0269720Z             },
2026-06-21T08:38:15.0269815Z             {
2026-06-21T08:38:15.0269963Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T08:38:15.0270083Z               "line": 71
2026-06-21T08:38:15.0270177Z             },
2026-06-21T08:38:15.0270273Z             {
2026-06-21T08:38:15.0270421Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.0270530Z               "line": 87
2026-06-21T08:38:15.0270636Z             }
2026-06-21T08:38:15.0270735Z           ]
2026-06-21T08:38:15.0270849Z         },
2026-06-21T08:38:15.0270956Z         "int": {
2026-06-21T08:38:15.0271079Z           "complete": false,
2026-06-21T08:38:15.0271183Z           "evidence": []
2026-06-21T08:38:15.0271294Z         },
2026-06-21T08:38:15.0271402Z         "unit": {
2026-06-21T08:38:15.0271532Z           "complete": true,
2026-06-21T08:38:15.0271637Z           "evidence": [
2026-06-21T08:38:15.0271741Z             {
2026-06-21T08:38:15.0271903Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0272010Z               "line": 289
2026-06-21T08:38:15.0272109Z             },
2026-06-21T08:38:15.0272210Z             {
2026-06-21T08:38:15.0272363Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0272477Z               "line": 314
2026-06-21T08:38:15.0272583Z             },
2026-06-21T08:38:15.0272687Z             {
2026-06-21T08:38:15.0272840Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0272950Z               "line": 350
2026-06-21T08:38:15.0273054Z             },
2026-06-21T08:38:15.0273160Z             {
2026-06-21T08:38:15.0273316Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0273526Z               "line": 418
2026-06-21T08:38:15.0273636Z             },
2026-06-21T08:38:15.0273837Z             {
2026-06-21T08:38:15.0273989Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0274099Z               "line": 429
2026-06-21T08:38:15.0274208Z             },
2026-06-21T08:38:15.0274308Z             {
2026-06-21T08:38:15.0274457Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0274575Z               "line": 460
2026-06-21T08:38:15.0274674Z             },
2026-06-21T08:38:15.0274779Z             {
2026-06-21T08:38:15.0274925Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.0275043Z               "line": 471
2026-06-21T08:38:15.0275150Z             },
2026-06-21T08:38:15.0275249Z             {
2026-06-21T08:38:15.0275402Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0275507Z               "line": 77
2026-06-21T08:38:15.0275611Z             },
2026-06-21T08:38:15.0275717Z             {
2026-06-21T08:38:15.0275874Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0275993Z               "line": 97
2026-06-21T08:38:15.0276093Z             },
2026-06-21T08:38:15.0276203Z             {
2026-06-21T08:38:15.0276346Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0276460Z               "line": 112
2026-06-21T08:38:15.0276560Z             },
2026-06-21T08:38:15.0276661Z             {
2026-06-21T08:38:15.0276803Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0276913Z               "line": 123
2026-06-21T08:38:15.0277019Z             },
2026-06-21T08:38:15.0277123Z             {
2026-06-21T08:38:15.0277274Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0277379Z               "line": 130
2026-06-21T08:38:15.0277482Z             },
2026-06-21T08:38:15.0277582Z             {
2026-06-21T08:38:15.0277725Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T08:38:15.0277848Z               "line": 145
2026-06-21T08:38:15.0277939Z             },
2026-06-21T08:38:15.0278054Z             {
2026-06-21T08:38:15.0278196Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T08:38:15.0278298Z               "line": 115
2026-06-21T08:38:15.0278407Z             },
2026-06-21T08:38:15.0278511Z             {
2026-06-21T08:38:15.0278651Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T08:38:15.0278760Z               "line": 130
2026-06-21T08:38:15.0278865Z             },
2026-06-21T08:38:15.0279050Z             {
2026-06-21T08:38:15.0279198Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.0279309Z               "line": 428
2026-06-21T08:38:15.0279413Z             }
2026-06-21T08:38:15.0279513Z           ]
2026-06-21T08:38:15.0279610Z         }
2026-06-21T08:38:15.0279717Z       }
2026-06-21T08:38:15.0279823Z     },
2026-06-21T08:38:15.0279924Z     {
2026-06-21T08:38:15.0280079Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T08:38:15.0286213Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T08:38:15.0286601Z       "requiredStages": [
2026-06-21T08:38:15.0286705Z         "impl",
2026-06-21T08:38:15.0286806Z         "unit",
2026-06-21T08:38:15.0286911Z         "int"
2026-06-21T08:38:15.0287016Z       ],
2026-06-21T08:38:15.0287135Z       "stages": {
2026-06-21T08:38:15.0287236Z         "doc": {
2026-06-21T08:38:15.0287354Z           "complete": false,
2026-06-21T08:38:15.0287468Z           "evidence": []
2026-06-21T08:38:15.0287575Z         },
2026-06-21T08:38:15.0287688Z         "impl": {
2026-06-21T08:38:15.0287796Z           "complete": true,
2026-06-21T08:38:15.0287915Z           "evidence": [
2026-06-21T08:38:15.0288009Z             {
2026-06-21T08:38:15.0288161Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0288272Z               "line": 943
2026-06-21T08:38:15.0288381Z             },
2026-06-21T08:38:15.0288485Z             {
2026-06-21T08:38:15.0288633Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0288752Z               "line": 322
2026-06-21T08:38:15.0288858Z             }
2026-06-21T08:38:15.0289052Z           ]
2026-06-21T08:38:15.0289149Z         },
2026-06-21T08:38:15.0289254Z         "int": {
2026-06-21T08:38:15.0289400Z           "complete": true,
2026-06-21T08:38:15.0289511Z           "evidence": [
2026-06-21T08:38:15.0289620Z             {
2026-06-21T08:38:15.0289798Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.0289925Z               "line": 1983
2026-06-21T08:38:15.0290030Z             }
2026-06-21T08:38:15.0290141Z           ]
2026-06-21T08:38:15.0290249Z         },
2026-06-21T08:38:15.0290359Z         "unit": {
2026-06-21T08:38:15.0290475Z           "complete": true,
2026-06-21T08:38:15.0290583Z           "evidence": [
2026-06-21T08:38:15.0290682Z             {
2026-06-21T08:38:15.0290835Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0290954Z               "line": 2529
2026-06-21T08:38:15.0291064Z             },
2026-06-21T08:38:15.0291169Z             {
2026-06-21T08:38:15.0291326Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0291442Z               "line": 2593
2026-06-21T08:38:15.0291551Z             },
2026-06-21T08:38:15.0291650Z             {
2026-06-21T08:38:15.0291803Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0291917Z               "line": 2648
2026-06-21T08:38:15.0292013Z             }
2026-06-21T08:38:15.0292118Z           ]
2026-06-21T08:38:15.0292223Z         }
2026-06-21T08:38:15.0292323Z       }
2026-06-21T08:38:15.0292424Z     },
2026-06-21T08:38:15.0292532Z     {
2026-06-21T08:38:15.0292677Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T08:38:15.0293549Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T08:38:15.0293888Z       "requiredStages": [
2026-06-21T08:38:15.0293989Z         "doc",
2026-06-21T08:38:15.0294099Z         "impl",
2026-06-21T08:38:15.0294198Z         "unit"
2026-06-21T08:38:15.0294304Z       ],
2026-06-21T08:38:15.0294413Z       "stages": {
2026-06-21T08:38:15.0294522Z         "doc": {
2026-06-21T08:38:15.0294643Z           "complete": true,
2026-06-21T08:38:15.0294756Z           "evidence": [
2026-06-21T08:38:15.0294865Z             {
2026-06-21T08:38:15.0295009Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0295118Z               "line": 374
2026-06-21T08:38:15.0295229Z             }
2026-06-21T08:38:15.0295333Z           ]
2026-06-21T08:38:15.0295438Z         },
2026-06-21T08:38:15.0295548Z         "impl": {
2026-06-21T08:38:15.0295671Z           "complete": true,
2026-06-21T08:38:15.0295785Z           "evidence": [
2026-06-21T08:38:15.0295895Z             {
2026-06-21T08:38:15.0296050Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0296169Z               "line": 200
2026-06-21T08:38:15.0296279Z             },
2026-06-21T08:38:15.0296383Z             {
2026-06-21T08:38:15.0296532Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0296646Z               "line": 304
2026-06-21T08:38:15.0296741Z             },
2026-06-21T08:38:15.0296852Z             {
2026-06-21T08:38:15.0296985Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0297098Z               "line": 562
2026-06-21T08:38:15.0297200Z             },
2026-06-21T08:38:15.0297304Z             {
2026-06-21T08:38:15.0297447Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0297552Z               "line": 577
2026-06-21T08:38:15.0297661Z             },
2026-06-21T08:38:15.0297762Z             {
2026-06-21T08:38:15.0297905Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0298029Z               "line": 1224
2026-06-21T08:38:15.0298125Z             },
2026-06-21T08:38:15.0298224Z             {
2026-06-21T08:38:15.0298380Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0298499Z               "line": 443
2026-06-21T08:38:15.0298597Z             },
2026-06-21T08:38:15.0298702Z             {
2026-06-21T08:38:15.0298851Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0299055Z               "line": 590
2026-06-21T08:38:15.0299166Z             },
2026-06-21T08:38:15.0299269Z             {
2026-06-21T08:38:15.0299442Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0299556Z               "line": 731
2026-06-21T08:38:15.0299665Z             }
2026-06-21T08:38:15.0299766Z           ]
2026-06-21T08:38:15.0299875Z         },
2026-06-21T08:38:15.0299980Z         "int": {
2026-06-21T08:38:15.0300100Z           "complete": false,
2026-06-21T08:38:15.0300219Z           "evidence": []
2026-06-21T08:38:15.0300324Z         },
2026-06-21T08:38:15.0300429Z         "unit": {
2026-06-21T08:38:15.0300543Z           "complete": true,
2026-06-21T08:38:15.0300658Z           "evidence": [
2026-06-21T08:38:15.0300763Z             {
2026-06-21T08:38:15.0300914Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0301030Z               "line": 1155
2026-06-21T08:38:15.0301134Z             },
2026-06-21T08:38:15.0301233Z             {
2026-06-21T08:38:15.0301396Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T08:38:15.0301514Z               "line": 30
2026-06-21T08:38:15.0301624Z             }
2026-06-21T08:38:15.0301725Z           ]
2026-06-21T08:38:15.0301838Z         }
2026-06-21T08:38:15.0301944Z       }
2026-06-21T08:38:15.0302049Z     },
2026-06-21T08:38:15.0302153Z     {
2026-06-21T08:38:15.0302288Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T08:38:15.0305635Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T08:38:15.0305993Z       "requiredStages": [
2026-06-21T08:38:15.0306109Z         "impl",
2026-06-21T08:38:15.0306218Z         "unit",
2026-06-21T08:38:15.0306326Z         "int"
2026-06-21T08:38:15.0306431Z       ],
2026-06-21T08:38:15.0306544Z       "stages": {
2026-06-21T08:38:15.0306648Z         "doc": {
2026-06-21T08:38:15.0306772Z           "complete": false,
2026-06-21T08:38:15.0306887Z           "evidence": []
2026-06-21T08:38:15.0306981Z         },
2026-06-21T08:38:15.0307092Z         "impl": {
2026-06-21T08:38:15.0307206Z           "complete": true,
2026-06-21T08:38:15.0307320Z           "evidence": [
2026-06-21T08:38:15.0307421Z             {
2026-06-21T08:38:15.0307568Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0307692Z               "line": 718
2026-06-21T08:38:15.0307783Z             },
2026-06-21T08:38:15.0307892Z             {
2026-06-21T08:38:15.0308022Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0308145Z               "line": 887
2026-06-21T08:38:15.0308245Z             }
2026-06-21T08:38:15.0308356Z           ]
2026-06-21T08:38:15.0308465Z         },
2026-06-21T08:38:15.0308570Z         "int": {
2026-06-21T08:38:15.0308695Z           "complete": true,
2026-06-21T08:38:15.0308803Z           "evidence": [
2026-06-21T08:38:15.0308902Z             {
2026-06-21T08:38:15.0309134Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.0309252Z               "line": 420
2026-06-21T08:38:15.0309358Z             }
2026-06-21T08:38:15.0309458Z           ]
2026-06-21T08:38:15.0309567Z         },
2026-06-21T08:38:15.0309678Z         "unit": {
2026-06-21T08:38:15.0309797Z           "complete": true,
2026-06-21T08:38:15.0309906Z           "evidence": [
2026-06-21T08:38:15.0310011Z             {
2026-06-21T08:38:15.0310144Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0310254Z               "line": 1072
2026-06-21T08:38:15.0310354Z             },
2026-06-21T08:38:15.0310455Z             {
2026-06-21T08:38:15.0310598Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0310707Z               "line": 1096
2026-06-21T08:38:15.0310817Z             }
2026-06-21T08:38:15.0310923Z           ]
2026-06-21T08:38:15.0311026Z         }
2026-06-21T08:38:15.0311127Z       }
2026-06-21T08:38:15.0311233Z     },
2026-06-21T08:38:15.0311341Z     {
2026-06-21T08:38:15.0311489Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T08:38:15.0315303Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T08:38:15.0315632Z       "requiredStages": [
2026-06-21T08:38:15.0315729Z         "impl",
2026-06-21T08:38:15.0315838Z         "unit",
2026-06-21T08:38:15.0315947Z         "int"
2026-06-21T08:38:15.0316054Z       ],
2026-06-21T08:38:15.0316157Z       "stages": {
2026-06-21T08:38:15.0316267Z         "doc": {
2026-06-21T08:38:15.0316393Z           "complete": false,
2026-06-21T08:38:15.0316505Z           "evidence": []
2026-06-21T08:38:15.0316616Z         },
2026-06-21T08:38:15.0316717Z         "impl": {
2026-06-21T08:38:15.0316834Z           "complete": true,
2026-06-21T08:38:15.0316942Z           "evidence": [
2026-06-21T08:38:15.0317043Z             {
2026-06-21T08:38:15.0317189Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0317294Z               "line": 1417
2026-06-21T08:38:15.0317404Z             },
2026-06-21T08:38:15.0317508Z             {
2026-06-21T08:38:15.0317642Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0317762Z               "line": 1441
2026-06-21T08:38:15.0317866Z             }
2026-06-21T08:38:15.0317967Z           ]
2026-06-21T08:38:15.0318076Z         },
2026-06-21T08:38:15.0318180Z         "int": {
2026-06-21T08:38:15.0318286Z           "complete": true,
2026-06-21T08:38:15.0318414Z           "evidence": [
2026-06-21T08:38:15.0318519Z             {
2026-06-21T08:38:15.0318691Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T08:38:15.0318805Z               "line": 329
2026-06-21T08:38:15.0318911Z             }
2026-06-21T08:38:15.0319091Z           ]
2026-06-21T08:38:15.0319197Z         },
2026-06-21T08:38:15.0319312Z         "unit": {
2026-06-21T08:38:15.0319429Z           "complete": true,
2026-06-21T08:38:15.0319548Z           "evidence": [
2026-06-21T08:38:15.0319652Z             {
2026-06-21T08:38:15.0319789Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0319904Z               "line": 8169
2026-06-21T08:38:15.0319995Z             }
2026-06-21T08:38:15.0320094Z           ]
2026-06-21T08:38:15.0320199Z         }
2026-06-21T08:38:15.0320300Z       }
2026-06-21T08:38:15.0320404Z     },
2026-06-21T08:38:15.0320504Z     {
2026-06-21T08:38:15.0320638Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T08:38:15.0324489Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T08:38:15.0324858Z       "requiredStages": [
2026-06-21T08:38:15.0324967Z         "impl",
2026-06-21T08:38:15.0325083Z         "unit"
2026-06-21T08:38:15.0325192Z       ],
2026-06-21T08:38:15.0325301Z       "stages": {
2026-06-21T08:38:15.0325393Z         "doc": {
2026-06-21T08:38:15.0325511Z           "complete": false,
2026-06-21T08:38:15.0325616Z           "evidence": []
2026-06-21T08:38:15.0325717Z         },
2026-06-21T08:38:15.0325826Z         "impl": {
2026-06-21T08:38:15.0325941Z           "complete": true,
2026-06-21T08:38:15.0326055Z           "evidence": [
2026-06-21T08:38:15.0326169Z             {
2026-06-21T08:38:15.0326289Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0326403Z               "line": 910
2026-06-21T08:38:15.0326512Z             }
2026-06-21T08:38:15.0326623Z           ]
2026-06-21T08:38:15.0326727Z         },
2026-06-21T08:38:15.0326836Z         "int": {
2026-06-21T08:38:15.0326957Z           "complete": false,
2026-06-21T08:38:15.0327079Z           "evidence": []
2026-06-21T08:38:15.0327181Z         },
2026-06-21T08:38:15.0327291Z         "unit": {
2026-06-21T08:38:15.0327413Z           "complete": true,
2026-06-21T08:38:15.0327517Z           "evidence": [
2026-06-21T08:38:15.0327618Z             {
2026-06-21T08:38:15.0327749Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0327873Z               "line": 1112
2026-06-21T08:38:15.0327974Z             }
2026-06-21T08:38:15.0328077Z           ]
2026-06-21T08:38:15.0328183Z         }
2026-06-21T08:38:15.0328288Z       }
2026-06-21T08:38:15.0328397Z     },
2026-06-21T08:38:15.0328488Z     {
2026-06-21T08:38:15.0328646Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T08:38:15.0333276Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T08:38:15.0333462Z       "requiredStages": [
2026-06-21T08:38:15.0333571Z         "impl",
2026-06-21T08:38:15.0333677Z         "unit"
2026-06-21T08:38:15.0333787Z       ],
2026-06-21T08:38:15.0333895Z       "stages": {
2026-06-21T08:38:15.0334001Z         "doc": {
2026-06-21T08:38:15.0334130Z           "complete": false,
2026-06-21T08:38:15.0334249Z           "evidence": []
2026-06-21T08:38:15.0334473Z         },
2026-06-21T08:38:15.0334583Z         "impl": {
2026-06-21T08:38:15.0334711Z           "complete": true,
2026-06-21T08:38:15.0334922Z           "evidence": [
2026-06-21T08:38:15.0335035Z             {
2026-06-21T08:38:15.0335177Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0335291Z               "line": 264
2026-06-21T08:38:15.0335404Z             }
2026-06-21T08:38:15.0335513Z           ]
2026-06-21T08:38:15.0335619Z         },
2026-06-21T08:38:15.0335728Z         "int": {
2026-06-21T08:38:15.0335856Z           "complete": false,
2026-06-21T08:38:15.0335981Z           "evidence": []
2026-06-21T08:38:15.0336086Z         },
2026-06-21T08:38:15.0336196Z         "unit": {
2026-06-21T08:38:15.0336310Z           "complete": true,
2026-06-21T08:38:15.0336428Z           "evidence": [
2026-06-21T08:38:15.0336535Z             {
2026-06-21T08:38:15.0336668Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0336782Z               "line": 1094
2026-06-21T08:38:15.0336892Z             },
2026-06-21T08:38:15.0337002Z             {
2026-06-21T08:38:15.0337135Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0337259Z               "line": 1225
2026-06-21T08:38:15.0337359Z             },
2026-06-21T08:38:15.0337465Z             {
2026-06-21T08:38:15.0337593Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0337711Z               "line": 1227
2026-06-21T08:38:15.0337813Z             }
2026-06-21T08:38:15.0337912Z           ]
2026-06-21T08:38:15.0338016Z         }
2026-06-21T08:38:15.0338121Z       }
2026-06-21T08:38:15.0338220Z     },
2026-06-21T08:38:15.0338328Z     {
2026-06-21T08:38:15.0338462Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T08:38:15.0338767Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T08:38:15.0338887Z       "requiredStages": [
2026-06-21T08:38:15.0339073Z         "impl",
2026-06-21T08:38:15.0339182Z         "unit"
2026-06-21T08:38:15.0339291Z       ],
2026-06-21T08:38:15.0339411Z       "stages": {
2026-06-21T08:38:15.0339515Z         "doc": {
2026-06-21T08:38:15.0339649Z           "complete": true,
2026-06-21T08:38:15.0339765Z           "evidence": [
2026-06-21T08:38:15.0339868Z             {
2026-06-21T08:38:15.0340002Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0340127Z               "line": 139
2026-06-21T08:38:15.0340236Z             }
2026-06-21T08:38:15.0340342Z           ]
2026-06-21T08:38:15.0340456Z         },
2026-06-21T08:38:15.0340564Z         "impl": {
2026-06-21T08:38:15.0340687Z           "complete": true,
2026-06-21T08:38:15.0340792Z           "evidence": [
2026-06-21T08:38:15.0340904Z             {
2026-06-21T08:38:15.0341048Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T08:38:15.0341153Z               "line": 29
2026-06-21T08:38:15.0341266Z             },
2026-06-21T08:38:15.0341368Z             {
2026-06-21T08:38:15.0341519Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T08:38:15.0341630Z               "line": 67
2026-06-21T08:38:15.0341734Z             },
2026-06-21T08:38:15.0341853Z             {
2026-06-21T08:38:15.0342002Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.0342121Z               "line": 101
2026-06-21T08:38:15.0342225Z             },
2026-06-21T08:38:15.0342327Z             {
2026-06-21T08:38:15.0342482Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0342598Z               "line": 30
2026-06-21T08:38:15.0342716Z             },
2026-06-21T08:38:15.0342821Z             {
2026-06-21T08:38:15.0342975Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.0343083Z               "line": 48
2026-06-21T08:38:15.0343184Z             }
2026-06-21T08:38:15.0343290Z           ]
2026-06-21T08:38:15.0343397Z         },
2026-06-21T08:38:15.0343506Z         "int": {
2026-06-21T08:38:15.0343627Z           "complete": false,
2026-06-21T08:38:15.0343741Z           "evidence": []
2026-06-21T08:38:15.0343961Z         },
2026-06-21T08:38:15.0344069Z         "unit": {
2026-06-21T08:38:15.0344270Z           "complete": true,
2026-06-21T08:38:15.0344375Z           "evidence": [
2026-06-21T08:38:15.0344475Z             {
2026-06-21T08:38:15.0344628Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0344751Z               "line": 162
2026-06-21T08:38:15.0344843Z             }
2026-06-21T08:38:15.0344956Z           ]
2026-06-21T08:38:15.0345052Z         }
2026-06-21T08:38:15.0345163Z       }
2026-06-21T08:38:15.0345262Z     },
2026-06-21T08:38:15.0345362Z     {
2026-06-21T08:38:15.0345516Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T08:38:15.0345936Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T08:38:15.0346097Z       "requiredStages": [
2026-06-21T08:38:15.0346203Z         "doc",
2026-06-21T08:38:15.0346312Z         "impl",
2026-06-21T08:38:15.0346431Z         "unit"
2026-06-21T08:38:15.0346537Z       ],
2026-06-21T08:38:15.0346651Z       "stages": {
2026-06-21T08:38:15.0346751Z         "doc": {
2026-06-21T08:38:15.0346871Z           "complete": true,
2026-06-21T08:38:15.0346984Z           "evidence": [
2026-06-21T08:38:15.0347091Z             {
2026-06-21T08:38:15.0347233Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0347337Z               "line": 151
2026-06-21T08:38:15.0347447Z             }
2026-06-21T08:38:15.0347552Z           ]
2026-06-21T08:38:15.0347666Z         },
2026-06-21T08:38:15.0347777Z         "impl": {
2026-06-21T08:38:15.0347895Z           "complete": true,
2026-06-21T08:38:15.0348015Z           "evidence": [
2026-06-21T08:38:15.0348120Z             {
2026-06-21T08:38:15.0348272Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0348383Z               "line": 22
2026-06-21T08:38:15.0348491Z             }
2026-06-21T08:38:15.0348599Z           ]
2026-06-21T08:38:15.0348700Z         },
2026-06-21T08:38:15.0348808Z         "int": {
2026-06-21T08:38:15.0348916Z           "complete": false,
2026-06-21T08:38:15.0349132Z           "evidence": []
2026-06-21T08:38:15.0349226Z         },
2026-06-21T08:38:15.0349333Z         "unit": {
2026-06-21T08:38:15.0349466Z           "complete": true,
2026-06-21T08:38:15.0349579Z           "evidence": [
2026-06-21T08:38:15.0349681Z             {
2026-06-21T08:38:15.0349828Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0349947Z               "line": 298
2026-06-21T08:38:15.0350052Z             }
2026-06-21T08:38:15.0350162Z           ]
2026-06-21T08:38:15.0350262Z         }
2026-06-21T08:38:15.0350372Z       }
2026-06-21T08:38:15.0350476Z     },
2026-06-21T08:38:15.0350582Z     {
2026-06-21T08:38:15.0350729Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T08:38:15.0351190Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T08:38:15.0351333Z       "requiredStages": [
2026-06-21T08:38:15.0351436Z         "impl",
2026-06-21T08:38:15.0351541Z         "unit"
2026-06-21T08:38:15.0351656Z       ],
2026-06-21T08:38:15.0351755Z       "stages": {
2026-06-21T08:38:15.0351870Z         "doc": {
2026-06-21T08:38:15.0351994Z           "complete": true,
2026-06-21T08:38:15.0352103Z           "evidence": [
2026-06-21T08:38:15.0352209Z             {
2026-06-21T08:38:15.0352357Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0352471Z               "line": 145
2026-06-21T08:38:15.0352572Z             }
2026-06-21T08:38:15.0352676Z           ]
2026-06-21T08:38:15.0352781Z         },
2026-06-21T08:38:15.0352887Z         "impl": {
2026-06-21T08:38:15.0353005Z           "complete": true,
2026-06-21T08:38:15.0353114Z           "evidence": [
2026-06-21T08:38:15.0353225Z             {
2026-06-21T08:38:15.0353381Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T08:38:15.0353502Z               "line": 160
2026-06-21T08:38:15.0353710Z             },
2026-06-21T08:38:15.0353817Z             {
2026-06-21T08:38:15.0354066Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0354173Z               "line": 200
2026-06-21T08:38:15.0354282Z             },
2026-06-21T08:38:15.0354386Z             {
2026-06-21T08:38:15.0354539Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0354648Z               "line": 298
2026-06-21T08:38:15.0354759Z             },
2026-06-21T08:38:15.0354868Z             {
2026-06-21T08:38:15.0355016Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T08:38:15.0355141Z               "line": 20
2026-06-21T08:38:15.0355240Z             }
2026-06-21T08:38:15.0358216Z           ]
2026-06-21T08:38:15.0358360Z         },
2026-06-21T08:38:15.0358470Z         "int": {
2026-06-21T08:38:15.0358600Z           "complete": false,
2026-06-21T08:38:15.0358713Z           "evidence": []
2026-06-21T08:38:15.0358818Z         },
2026-06-21T08:38:15.0359023Z         "unit": {
2026-06-21T08:38:15.0359145Z           "complete": true,
2026-06-21T08:38:15.0359265Z           "evidence": [
2026-06-21T08:38:15.0359363Z             {
2026-06-21T08:38:15.0359544Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0359645Z               "line": 937
2026-06-21T08:38:15.0359749Z             },
2026-06-21T08:38:15.0359854Z             {
2026-06-21T08:38:15.0360026Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T08:38:15.0360134Z               "line": 88
2026-06-21T08:38:15.0360241Z             },
2026-06-21T08:38:15.0360346Z             {
2026-06-21T08:38:15.0360502Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0360608Z               "line": 851
2026-06-21T08:38:15.0360712Z             },
2026-06-21T08:38:15.0360822Z             {
2026-06-21T08:38:15.0360974Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0361093Z               "line": 870
2026-06-21T08:38:15.0361199Z             },
2026-06-21T08:38:15.0361308Z             {
2026-06-21T08:38:15.0361462Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0361571Z               "line": 279
2026-06-21T08:38:15.0361674Z             },
2026-06-21T08:38:15.0361779Z             {
2026-06-21T08:38:15.0361926Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T08:38:15.0362048Z               "line": 82
2026-06-21T08:38:15.0362153Z             },
2026-06-21T08:38:15.0362259Z             {
2026-06-21T08:38:15.0362401Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T08:38:15.0362517Z               "line": 99
2026-06-21T08:38:15.0362621Z             },
2026-06-21T08:38:15.0362725Z             {
2026-06-21T08:38:15.0362878Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T08:38:15.0362987Z               "line": 119
2026-06-21T08:38:15.0363094Z             }
2026-06-21T08:38:15.0363198Z           ]
2026-06-21T08:38:15.0363307Z         }
2026-06-21T08:38:15.0363404Z       }
2026-06-21T08:38:15.0363513Z     },
2026-06-21T08:38:15.0363617Z     {
2026-06-21T08:38:15.0363776Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T08:38:15.0365218Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T08:38:15.0365348Z       "requiredStages": [
2026-06-21T08:38:15.0365453Z         "doc",
2026-06-21T08:38:15.0365561Z         "impl",
2026-06-21T08:38:15.0365672Z         "unit"
2026-06-21T08:38:15.0365781Z       ],
2026-06-21T08:38:15.0365886Z       "stages": {
2026-06-21T08:38:15.0365997Z         "doc": {
2026-06-21T08:38:15.0366254Z           "complete": true,
2026-06-21T08:38:15.0366373Z           "evidence": [
2026-06-21T08:38:15.0366482Z             {
2026-06-21T08:38:15.0366739Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0366867Z               "line": 157
2026-06-21T08:38:15.0366958Z             }
2026-06-21T08:38:15.0367065Z           ]
2026-06-21T08:38:15.0367169Z         },
2026-06-21T08:38:15.0367280Z         "impl": {
2026-06-21T08:38:15.0367404Z           "complete": true,
2026-06-21T08:38:15.0367513Z           "evidence": [
2026-06-21T08:38:15.0367619Z             {
2026-06-21T08:38:15.0367790Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:15.0367896Z               "line": 137
2026-06-21T08:38:15.0368000Z             },
2026-06-21T08:38:15.0368104Z             {
2026-06-21T08:38:15.0368276Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0368381Z               "line": 564
2026-06-21T08:38:15.0368491Z             },
2026-06-21T08:38:15.0368601Z             {
2026-06-21T08:38:15.0368763Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0368888Z               "line": 571
2026-06-21T08:38:15.0369063Z             },
2026-06-21T08:38:15.0369160Z             {
2026-06-21T08:38:15.0369311Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0369441Z               "line": 227
2026-06-21T08:38:15.0369536Z             }
2026-06-21T08:38:15.0369644Z           ]
2026-06-21T08:38:15.0369758Z         },
2026-06-21T08:38:15.0369863Z         "int": {
2026-06-21T08:38:15.0369990Z           "complete": false,
2026-06-21T08:38:15.0370094Z           "evidence": []
2026-06-21T08:38:15.0370205Z         },
2026-06-21T08:38:15.0370304Z         "unit": {
2026-06-21T08:38:15.0370419Z           "complete": true,
2026-06-21T08:38:15.0370524Z           "evidence": [
2026-06-21T08:38:15.0370633Z             {
2026-06-21T08:38:15.0370792Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0370906Z               "line": 1622
2026-06-21T08:38:15.0371000Z             },
2026-06-21T08:38:15.0371097Z             {
2026-06-21T08:38:15.0371258Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0371373Z               "line": 1680
2026-06-21T08:38:15.0371473Z             },
2026-06-21T08:38:15.0371582Z             {
2026-06-21T08:38:15.0371736Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0371854Z               "line": 883
2026-06-21T08:38:15.0371945Z             }
2026-06-21T08:38:15.0372041Z           ]
2026-06-21T08:38:15.0372150Z         }
2026-06-21T08:38:15.0372253Z       }
2026-06-21T08:38:15.0372349Z     },
2026-06-21T08:38:15.0372439Z     {
2026-06-21T08:38:15.0372594Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T08:38:15.0372824Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T08:38:15.0372952Z       "requiredStages": [
2026-06-21T08:38:15.0373067Z         "impl",
2026-06-21T08:38:15.0373176Z         "unit"
2026-06-21T08:38:15.0373281Z       ],
2026-06-21T08:38:15.0373391Z       "stages": {
2026-06-21T08:38:15.0373496Z         "doc": {
2026-06-21T08:38:15.0373615Z           "complete": false,
2026-06-21T08:38:15.0373735Z           "evidence": []
2026-06-21T08:38:15.0373830Z         },
2026-06-21T08:38:15.0373934Z         "impl": {
2026-06-21T08:38:15.0374054Z           "complete": true,
2026-06-21T08:38:15.0374159Z           "evidence": [
2026-06-21T08:38:15.0374269Z             {
2026-06-21T08:38:15.0374416Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0374530Z               "line": 15
2026-06-21T08:38:15.0374636Z             },
2026-06-21T08:38:15.0374740Z             {
2026-06-21T08:38:15.0374894Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0375008Z               "line": 55
2026-06-21T08:38:15.0375111Z             },
2026-06-21T08:38:15.0375206Z             {
2026-06-21T08:38:15.0375478Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0375593Z               "line": 66
2026-06-21T08:38:15.0375783Z             },
2026-06-21T08:38:15.0375889Z             {
2026-06-21T08:38:15.0376037Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0376155Z               "line": 115
2026-06-21T08:38:15.0376256Z             },
2026-06-21T08:38:15.0376366Z             {
2026-06-21T08:38:15.0376514Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0376618Z               "line": 138
2026-06-21T08:38:15.0376727Z             }
2026-06-21T08:38:15.0376829Z           ]
2026-06-21T08:38:15.0376938Z         },
2026-06-21T08:38:15.0377047Z         "int": {
2026-06-21T08:38:15.0377172Z           "complete": false,
2026-06-21T08:38:15.0377290Z           "evidence": []
2026-06-21T08:38:15.0377394Z         },
2026-06-21T08:38:15.0377494Z         "unit": {
2026-06-21T08:38:15.0377603Z           "complete": true,
2026-06-21T08:38:15.0377730Z           "evidence": [
2026-06-21T08:38:15.0377831Z             {
2026-06-21T08:38:15.0377978Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0378107Z               "line": 363
2026-06-21T08:38:15.0378208Z             },
2026-06-21T08:38:15.0378316Z             {
2026-06-21T08:38:15.0378461Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0378570Z               "line": 369
2026-06-21T08:38:15.0378669Z             },
2026-06-21T08:38:15.0378780Z             {
2026-06-21T08:38:15.0378923Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0379114Z               "line": 383
2026-06-21T08:38:15.0379223Z             },
2026-06-21T08:38:15.0379323Z             {
2026-06-21T08:38:15.0379471Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0379580Z               "line": 392
2026-06-21T08:38:15.0379691Z             },
2026-06-21T08:38:15.0379800Z             {
2026-06-21T08:38:15.0379952Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0380073Z               "line": 195
2026-06-21T08:38:15.0380176Z             },
2026-06-21T08:38:15.0380284Z             {
2026-06-21T08:38:15.0380428Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0380545Z               "line": 208
2026-06-21T08:38:15.0380650Z             },
2026-06-21T08:38:15.0380751Z             {
2026-06-21T08:38:15.0380902Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0381013Z               "line": 271
2026-06-21T08:38:15.0381118Z             },
2026-06-21T08:38:15.0381222Z             {
2026-06-21T08:38:15.0381366Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0381480Z               "line": 290
2026-06-21T08:38:15.0381584Z             },
2026-06-21T08:38:15.0381681Z             {
2026-06-21T08:38:15.0381823Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0381938Z               "line": 319
2026-06-21T08:38:15.0382052Z             }
2026-06-21T08:38:15.0382156Z           ]
2026-06-21T08:38:15.0382262Z         }
2026-06-21T08:38:15.0382376Z       }
2026-06-21T08:38:15.0382476Z     },
2026-06-21T08:38:15.0382577Z     {
2026-06-21T08:38:15.0382729Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T08:38:15.0383022Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T08:38:15.0383144Z       "requiredStages": [
2026-06-21T08:38:15.0383255Z         "impl",
2026-06-21T08:38:15.0383361Z         "unit",
2026-06-21T08:38:15.0383473Z         "int"
2026-06-21T08:38:15.0383575Z       ],
2026-06-21T08:38:15.0383684Z       "stages": {
2026-06-21T08:38:15.0383793Z         "doc": {
2026-06-21T08:38:15.0383913Z           "complete": false,
2026-06-21T08:38:15.0384032Z           "evidence": []
2026-06-21T08:38:15.0384126Z         },
2026-06-21T08:38:15.0384242Z         "impl": {
2026-06-21T08:38:15.0384361Z           "complete": true,
2026-06-21T08:38:15.0384576Z           "evidence": [
2026-06-21T08:38:15.0384681Z             {
2026-06-21T08:38:15.0384824Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0385024Z               "line": 474
2026-06-21T08:38:15.0385129Z             },
2026-06-21T08:38:15.0385234Z             {
2026-06-21T08:38:15.0385382Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0385497Z               "line": 916
2026-06-21T08:38:15.0385596Z             },
2026-06-21T08:38:15.0385700Z             {
2026-06-21T08:38:15.0385848Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0385962Z               "line": 961
2026-06-21T08:38:15.0386072Z             },
2026-06-21T08:38:15.0386178Z             {
2026-06-21T08:38:15.0386324Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.0386440Z               "line": 986
2026-06-21T08:38:15.0386544Z             },
2026-06-21T08:38:15.0386653Z             {
2026-06-21T08:38:15.0386802Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0386921Z               "line": 1760
2026-06-21T08:38:15.0387030Z             },
2026-06-21T08:38:15.0387127Z             {
2026-06-21T08:38:15.0387278Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0387389Z               "line": 2005
2026-06-21T08:38:15.0387498Z             },
2026-06-21T08:38:15.0387603Z             {
2026-06-21T08:38:15.0387756Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0387864Z               "line": 2136
2026-06-21T08:38:15.0387968Z             },
2026-06-21T08:38:15.0388073Z             {
2026-06-21T08:38:15.0388219Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0388338Z               "line": 2184
2026-06-21T08:38:15.0388439Z             },
2026-06-21T08:38:15.0388538Z             {
2026-06-21T08:38:15.0388682Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0388796Z               "line": 46
2026-06-21T08:38:15.0388905Z             },
2026-06-21T08:38:15.0389087Z             {
2026-06-21T08:38:15.0389234Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0389345Z               "line": 200
2026-06-21T08:38:15.0389449Z             },
2026-06-21T08:38:15.0389553Z             {
2026-06-21T08:38:15.0389693Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.0389807Z               "line": 132
2026-06-21T08:38:15.0389912Z             },
2026-06-21T08:38:15.0390018Z             {
2026-06-21T08:38:15.0390150Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.0390261Z               "line": 137
2026-06-21T08:38:15.0390361Z             },
2026-06-21T08:38:15.0390465Z             {
2026-06-21T08:38:15.0390609Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.0390722Z               "line": 183
2026-06-21T08:38:15.0390817Z             }
2026-06-21T08:38:15.0390912Z           ]
2026-06-21T08:38:15.0391016Z         },
2026-06-21T08:38:15.0391124Z         "int": {
2026-06-21T08:38:15.0391234Z           "complete": true,
2026-06-21T08:38:15.0391349Z           "evidence": [
2026-06-21T08:38:15.0391458Z             {
2026-06-21T08:38:15.0391625Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T08:38:15.0391734Z               "line": 27
2026-06-21T08:38:15.0391839Z             },
2026-06-21T08:38:15.0391950Z             {
2026-06-21T08:38:15.0392101Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T08:38:15.0392217Z               "line": 148
2026-06-21T08:38:15.0392326Z             },
2026-06-21T08:38:15.0392431Z             {
2026-06-21T08:38:15.0392584Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T08:38:15.0392707Z               "line": 200
2026-06-21T08:38:15.0392813Z             }
2026-06-21T08:38:15.0392908Z           ]
2026-06-21T08:38:15.0393017Z         },
2026-06-21T08:38:15.0393113Z         "unit": {
2026-06-21T08:38:15.0393233Z           "complete": true,
2026-06-21T08:38:15.0393440Z           "evidence": [
2026-06-21T08:38:15.0393545Z             {
2026-06-21T08:38:15.0393777Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0393887Z               "line": 366
2026-06-21T08:38:15.0393987Z             },
2026-06-21T08:38:15.0394082Z             {
2026-06-21T08:38:15.0394230Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0394339Z               "line": 398
2026-06-21T08:38:15.0394445Z             },
2026-06-21T08:38:15.0394559Z             {
2026-06-21T08:38:15.0394706Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T08:38:15.0394817Z               "line": 419
2026-06-21T08:38:15.0394921Z             },
2026-06-21T08:38:15.0395021Z             {
2026-06-21T08:38:15.0395174Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0395283Z               "line": 628
2026-06-21T08:38:15.0395389Z             },
2026-06-21T08:38:15.0395493Z             {
2026-06-21T08:38:15.0395646Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T08:38:15.0395757Z               "line": 289
2026-06-21T08:38:15.0395865Z             },
2026-06-21T08:38:15.0395961Z             {
2026-06-21T08:38:15.0396109Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T08:38:15.0396217Z               "line": 230
2026-06-21T08:38:15.0396322Z             },
2026-06-21T08:38:15.0396433Z             {
2026-06-21T08:38:15.0396574Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.0396694Z               "line": 526
2026-06-21T08:38:15.0396794Z             },
2026-06-21T08:38:15.0396894Z             {
2026-06-21T08:38:15.0397028Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.0397138Z               "line": 556
2026-06-21T08:38:15.0397241Z             }
2026-06-21T08:38:15.0397348Z           ]
2026-06-21T08:38:15.0397452Z         }
2026-06-21T08:38:15.0397552Z       }
2026-06-21T08:38:15.0397663Z     },
2026-06-21T08:38:15.0397772Z     {
2026-06-21T08:38:15.0397915Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T08:38:15.0399747Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T08:38:15.0399872Z       "requiredStages": [
2026-06-21T08:38:15.0399981Z         "doc",
2026-06-21T08:38:15.0400090Z         "impl",
2026-06-21T08:38:15.0400191Z         "unit"
2026-06-21T08:38:15.0400296Z       ],
2026-06-21T08:38:15.0400405Z       "stages": {
2026-06-21T08:38:15.0400516Z         "doc": {
2026-06-21T08:38:15.0400643Z           "complete": true,
2026-06-21T08:38:15.0400753Z           "evidence": [
2026-06-21T08:38:15.0400864Z             {
2026-06-21T08:38:15.0401000Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0401126Z               "line": 314
2026-06-21T08:38:15.0401227Z             }
2026-06-21T08:38:15.0401329Z           ]
2026-06-21T08:38:15.0401438Z         },
2026-06-21T08:38:15.0401539Z         "impl": {
2026-06-21T08:38:15.0401660Z           "complete": true,
2026-06-21T08:38:15.0401775Z           "evidence": [
2026-06-21T08:38:15.0401880Z             {
2026-06-21T08:38:15.0402046Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T08:38:15.0402167Z               "line": 33
2026-06-21T08:38:15.0402271Z             },
2026-06-21T08:38:15.0402375Z             {
2026-06-21T08:38:15.0402543Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T08:38:15.0402652Z               "line": 39
2026-06-21T08:38:15.0402748Z             }
2026-06-21T08:38:15.0402967Z           ]
2026-06-21T08:38:15.0403077Z         },
2026-06-21T08:38:15.0403186Z         "int": {
2026-06-21T08:38:15.0403397Z           "complete": false,
2026-06-21T08:38:15.0403520Z           "evidence": []
2026-06-21T08:38:15.0403625Z         },
2026-06-21T08:38:15.0403721Z         "unit": {
2026-06-21T08:38:15.0403835Z           "complete": true,
2026-06-21T08:38:15.0403957Z           "evidence": [
2026-06-21T08:38:15.0404067Z             {
2026-06-21T08:38:15.0404222Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T08:38:15.0404327Z               "line": 95
2026-06-21T08:38:15.0404423Z             }
2026-06-21T08:38:15.0404542Z           ]
2026-06-21T08:38:15.0404637Z         }
2026-06-21T08:38:15.0404743Z       }
2026-06-21T08:38:15.0404852Z     },
2026-06-21T08:38:15.0404956Z     {
2026-06-21T08:38:15.0405095Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T08:38:15.0407555Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T08:38:15.0407717Z       "requiredStages": [
2026-06-21T08:38:15.0407826Z         "impl",
2026-06-21T08:38:15.0407922Z         "unit"
2026-06-21T08:38:15.0408031Z       ],
2026-06-21T08:38:15.0408140Z       "stages": {
2026-06-21T08:38:15.0408247Z         "doc": {
2026-06-21T08:38:15.0408370Z           "complete": false,
2026-06-21T08:38:15.0408475Z           "evidence": []
2026-06-21T08:38:15.0408590Z         },
2026-06-21T08:38:15.0408698Z         "impl": {
2026-06-21T08:38:15.0408823Z           "complete": true,
2026-06-21T08:38:15.0408938Z           "evidence": [
2026-06-21T08:38:15.0409122Z             {
2026-06-21T08:38:15.0409288Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0409401Z               "line": 488
2026-06-21T08:38:15.0409502Z             }
2026-06-21T08:38:15.0409607Z           ]
2026-06-21T08:38:15.0409715Z         },
2026-06-21T08:38:15.0409821Z         "int": {
2026-06-21T08:38:15.0409940Z           "complete": false,
2026-06-21T08:38:15.0410059Z           "evidence": []
2026-06-21T08:38:15.0410165Z         },
2026-06-21T08:38:15.0410274Z         "unit": {
2026-06-21T08:38:15.0410383Z           "complete": true,
2026-06-21T08:38:15.0410499Z           "evidence": [
2026-06-21T08:38:15.0410603Z             {
2026-06-21T08:38:15.0410766Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0410880Z               "line": 1466
2026-06-21T08:38:15.0410984Z             }
2026-06-21T08:38:15.0411095Z           ]
2026-06-21T08:38:15.0411194Z         }
2026-06-21T08:38:15.0411294Z       }
2026-06-21T08:38:15.0411396Z     },
2026-06-21T08:38:15.0411495Z     {
2026-06-21T08:38:15.0411637Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T08:38:15.0413813Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T08:38:15.0414161Z       "requiredStages": [
2026-06-21T08:38:15.0414277Z         "unit"
2026-06-21T08:38:15.0414381Z       ],
2026-06-21T08:38:15.0414485Z       "stages": {
2026-06-21T08:38:15.0414585Z         "doc": {
2026-06-21T08:38:15.0414708Z           "complete": false,
2026-06-21T08:38:15.0414825Z           "evidence": []
2026-06-21T08:38:15.0414930Z         },
2026-06-21T08:38:15.0415050Z         "impl": {
2026-06-21T08:38:15.0415149Z           "complete": true,
2026-06-21T08:38:15.0415265Z           "evidence": [
2026-06-21T08:38:15.0415370Z             {
2026-06-21T08:38:15.0415526Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0415636Z               "line": 3520
2026-06-21T08:38:15.0415741Z             },
2026-06-21T08:38:15.0415841Z             {
2026-06-21T08:38:15.0415984Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0416098Z               "line": 3572
2026-06-21T08:38:15.0416214Z             },
2026-06-21T08:38:15.0416322Z             {
2026-06-21T08:38:15.0416461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0416577Z               "line": 3617
2026-06-21T08:38:15.0416685Z             },
2026-06-21T08:38:15.0416790Z             {
2026-06-21T08:38:15.0416933Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0417043Z               "line": 92
2026-06-21T08:38:15.0417153Z             },
2026-06-21T08:38:15.0417262Z             {
2026-06-21T08:38:15.0417408Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0417519Z               "line": 148
2026-06-21T08:38:15.0417624Z             },
2026-06-21T08:38:15.0417728Z             {
2026-06-21T08:38:15.0417858Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0417967Z               "line": 192
2026-06-21T08:38:15.0418081Z             },
2026-06-21T08:38:15.0418182Z             {
2026-06-21T08:38:15.0418329Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0418449Z               "line": 200
2026-06-21T08:38:15.0418558Z             },
2026-06-21T08:38:15.0418663Z             {
2026-06-21T08:38:15.0418807Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0418930Z               "line": 211
2026-06-21T08:38:15.0419098Z             },
2026-06-21T08:38:15.0419197Z             {
2026-06-21T08:38:15.0419340Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0419455Z               "line": 265
2026-06-21T08:38:15.0419559Z             },
2026-06-21T08:38:15.0419668Z             {
2026-06-21T08:38:15.0419815Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0419928Z               "line": 279
2026-06-21T08:38:15.0420038Z             }
2026-06-21T08:38:15.0420139Z           ]
2026-06-21T08:38:15.0420243Z         },
2026-06-21T08:38:15.0420352Z         "int": {
2026-06-21T08:38:15.0420472Z           "complete": false,
2026-06-21T08:38:15.0420590Z           "evidence": []
2026-06-21T08:38:15.0420692Z         },
2026-06-21T08:38:15.0420805Z         "unit": {
2026-06-21T08:38:15.0420919Z           "complete": true,
2026-06-21T08:38:15.0421025Z           "evidence": [
2026-06-21T08:38:15.0421116Z             {
2026-06-21T08:38:15.0421268Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0421388Z               "line": 419
2026-06-21T08:38:15.0421492Z             },
2026-06-21T08:38:15.0421602Z             {
2026-06-21T08:38:15.0421735Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0421845Z               "line": 470
2026-06-21T08:38:15.0421956Z             },
2026-06-21T08:38:15.0422060Z             {
2026-06-21T08:38:15.0422197Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0422308Z               "line": 499
2026-06-21T08:38:15.0422412Z             },
2026-06-21T08:38:15.0422621Z             {
2026-06-21T08:38:15.0422762Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0422972Z               "line": 526
2026-06-21T08:38:15.0423077Z             }
2026-06-21T08:38:15.0423181Z           ]
2026-06-21T08:38:15.0423287Z         }
2026-06-21T08:38:15.0423396Z       }
2026-06-21T08:38:15.0423500Z     },
2026-06-21T08:38:15.0423602Z     {
2026-06-21T08:38:15.0423744Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T08:38:15.0423978Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T08:38:15.0424096Z       "requiredStages": [
2026-06-21T08:38:15.0424203Z         "impl",
2026-06-21T08:38:15.0424312Z         "unit"
2026-06-21T08:38:15.0424411Z       ],
2026-06-21T08:38:15.0424527Z       "stages": {
2026-06-21T08:38:15.0424641Z         "doc": {
2026-06-21T08:38:15.0424750Z           "complete": false,
2026-06-21T08:38:15.0424856Z           "evidence": []
2026-06-21T08:38:15.0424960Z         },
2026-06-21T08:38:15.0425078Z         "impl": {
2026-06-21T08:38:15.0425197Z           "complete": true,
2026-06-21T08:38:15.0425305Z           "evidence": [
2026-06-21T08:38:15.0425419Z             {
2026-06-21T08:38:15.0425582Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0425700Z               "line": 62
2026-06-21T08:38:15.0425801Z             },
2026-06-21T08:38:15.0425905Z             {
2026-06-21T08:38:15.0426053Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0426173Z               "line": 71
2026-06-21T08:38:15.0426278Z             },
2026-06-21T08:38:15.0426382Z             {
2026-06-21T08:38:15.0426540Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0426648Z               "line": 80
2026-06-21T08:38:15.0426760Z             },
2026-06-21T08:38:15.0426864Z             {
2026-06-21T08:38:15.0427017Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0427122Z               "line": 88
2026-06-21T08:38:15.0427235Z             },
2026-06-21T08:38:15.0427346Z             {
2026-06-21T08:38:15.0427485Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0427598Z               "line": 33
2026-06-21T08:38:15.0427709Z             },
2026-06-21T08:38:15.0427809Z             {
2026-06-21T08:38:15.0427959Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0428074Z               "line": 65
2026-06-21T08:38:15.0428179Z             },
2026-06-21T08:38:15.0428283Z             {
2026-06-21T08:38:15.0428418Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0428527Z               "line": 74
2026-06-21T08:38:15.0428622Z             },
2026-06-21T08:38:15.0428714Z             {
2026-06-21T08:38:15.0428860Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0429066Z               "line": 93
2026-06-21T08:38:15.0429166Z             },
2026-06-21T08:38:15.0429265Z             {
2026-06-21T08:38:15.0429461Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0429580Z               "line": 102
2026-06-21T08:38:15.0429677Z             },
2026-06-21T08:38:15.0429785Z             {
2026-06-21T08:38:15.0429924Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0430034Z               "line": 111
2026-06-21T08:38:15.0430138Z             },
2026-06-21T08:38:15.0430242Z             {
2026-06-21T08:38:15.0430384Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0430502Z               "line": 122
2026-06-21T08:38:15.0430607Z             },
2026-06-21T08:38:15.0430713Z             {
2026-06-21T08:38:15.0430854Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0430975Z               "line": 140
2026-06-21T08:38:15.0431084Z             },
2026-06-21T08:38:15.0431188Z             {
2026-06-21T08:38:15.0431328Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0431437Z               "line": 149
2026-06-21T08:38:15.0431647Z             },
2026-06-21T08:38:15.0431752Z             {
2026-06-21T08:38:15.0431891Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0432109Z               "line": 158
2026-06-21T08:38:15.0432211Z             },
2026-06-21T08:38:15.0432314Z             {
2026-06-21T08:38:15.0432452Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0432573Z               "line": 169
2026-06-21T08:38:15.0432672Z             },
2026-06-21T08:38:15.0432777Z             {
2026-06-21T08:38:15.0432911Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0433024Z               "line": 177
2026-06-21T08:38:15.0433133Z             },
2026-06-21T08:38:15.0433233Z             {
2026-06-21T08:38:15.0433378Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0433489Z               "line": 186
2026-06-21T08:38:15.0433594Z             },
2026-06-21T08:38:15.0433703Z             {
2026-06-21T08:38:15.0433842Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0433961Z               "line": 195
2026-06-21T08:38:15.0434065Z             },
2026-06-21T08:38:15.0434181Z             {
2026-06-21T08:38:15.0434328Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0434443Z               "line": 204
2026-06-21T08:38:15.0434547Z             },
2026-06-21T08:38:15.0434652Z             {
2026-06-21T08:38:15.0434796Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0434909Z               "line": 216
2026-06-21T08:38:15.0435019Z             },
2026-06-21T08:38:15.0435125Z             {
2026-06-21T08:38:15.0435272Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0435393Z               "line": 223
2026-06-21T08:38:15.0435497Z             },
2026-06-21T08:38:15.0435600Z             {
2026-06-21T08:38:15.0435729Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0435837Z               "line": 232
2026-06-21T08:38:15.0435945Z             },
2026-06-21T08:38:15.0436051Z             {
2026-06-21T08:38:15.0436199Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0436322Z               "line": 239
2026-06-21T08:38:15.0436428Z             },
2026-06-21T08:38:15.0436533Z             {
2026-06-21T08:38:15.0436671Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0436780Z               "line": 306
2026-06-21T08:38:15.0436885Z             },
2026-06-21T08:38:15.0436996Z             {
2026-06-21T08:38:15.0437123Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0437247Z               "line": 318
2026-06-21T08:38:15.0437349Z             },
2026-06-21T08:38:15.0437457Z             {
2026-06-21T08:38:15.0437591Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0437702Z               "line": 405
2026-06-21T08:38:15.0437810Z             }
2026-06-21T08:38:15.0437920Z           ]
2026-06-21T08:38:15.0438031Z         },
2026-06-21T08:38:15.0438139Z         "int": {
2026-06-21T08:38:15.0438269Z           "complete": false,
2026-06-21T08:38:15.0438378Z           "evidence": []
2026-06-21T08:38:15.0438496Z         },
2026-06-21T08:38:15.0438596Z         "unit": {
2026-06-21T08:38:15.0438717Z           "complete": true,
2026-06-21T08:38:15.0438829Z           "evidence": [
2026-06-21T08:38:15.0438925Z             {
2026-06-21T08:38:15.0439139Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0439245Z               "line": 487
2026-06-21T08:38:15.0439354Z             },
2026-06-21T08:38:15.0439458Z             {
2026-06-21T08:38:15.0439608Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0439722Z               "line": 528
2026-06-21T08:38:15.0439817Z             },
2026-06-21T08:38:15.0439918Z             {
2026-06-21T08:38:15.0440064Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0440175Z               "line": 541
2026-06-21T08:38:15.0440280Z             },
2026-06-21T08:38:15.0440514Z             {
2026-06-21T08:38:15.0440650Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0440865Z               "line": 627
2026-06-21T08:38:15.0440977Z             }
2026-06-21T08:38:15.0441076Z           ]
2026-06-21T08:38:15.0441182Z         }
2026-06-21T08:38:15.0441287Z       }
2026-06-21T08:38:15.0441387Z     },
2026-06-21T08:38:15.0441487Z     {
2026-06-21T08:38:15.0441621Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T08:38:15.0441850Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T08:38:15.0441968Z       "requiredStages": [
2026-06-21T08:38:15.0442078Z         "impl",
2026-06-21T08:38:15.0442183Z         "unit"
2026-06-21T08:38:15.0442288Z       ],
2026-06-21T08:38:15.0442397Z       "stages": {
2026-06-21T08:38:15.0442503Z         "doc": {
2026-06-21T08:38:15.0442631Z           "complete": false,
2026-06-21T08:38:15.0442751Z           "evidence": []
2026-06-21T08:38:15.0442846Z         },
2026-06-21T08:38:15.0442965Z         "impl": {
2026-06-21T08:38:15.0443076Z           "complete": true,
2026-06-21T08:38:15.0443194Z           "evidence": [
2026-06-21T08:38:15.0443304Z             {
2026-06-21T08:38:15.0443439Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.0443565Z               "line": 175
2026-06-21T08:38:15.0446444Z             },
2026-06-21T08:38:15.0446587Z             {
2026-06-21T08:38:15.0446759Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.0446882Z               "line": 171
2026-06-21T08:38:15.0446988Z             }
2026-06-21T08:38:15.0447097Z           ]
2026-06-21T08:38:15.0447197Z         },
2026-06-21T08:38:15.0447293Z         "int": {
2026-06-21T08:38:15.0447408Z           "complete": false,
2026-06-21T08:38:15.0447517Z           "evidence": []
2026-06-21T08:38:15.0447627Z         },
2026-06-21T08:38:15.0447727Z         "unit": {
2026-06-21T08:38:15.0447855Z           "complete": true,
2026-06-21T08:38:15.0447975Z           "evidence": [
2026-06-21T08:38:15.0448094Z             {
2026-06-21T08:38:15.0448238Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.0448355Z               "line": 297
2026-06-21T08:38:15.0448456Z             },
2026-06-21T08:38:15.0448553Z             {
2026-06-21T08:38:15.0448709Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.0448820Z               "line": 836
2026-06-21T08:38:15.0448915Z             },
2026-06-21T08:38:15.0449099Z             {
2026-06-21T08:38:15.0449242Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.0449380Z               "line": 849
2026-06-21T08:38:15.0449485Z             }
2026-06-21T08:38:15.0449590Z           ]
2026-06-21T08:38:15.0449699Z         }
2026-06-21T08:38:15.0449800Z       }
2026-06-21T08:38:15.0449905Z     },
2026-06-21T08:38:15.0450000Z     {
2026-06-21T08:38:15.0450134Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T08:38:15.0450291Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T08:38:15.0450425Z       "requiredStages": [
2026-06-21T08:38:15.0450539Z         "impl",
2026-06-21T08:38:15.0450648Z         "unit"
2026-06-21T08:38:15.0450755Z       ],
2026-06-21T08:38:15.0450863Z       "stages": {
2026-06-21T08:38:15.0450972Z         "doc": {
2026-06-21T08:38:15.0451088Z           "complete": false,
2026-06-21T08:38:15.0451211Z           "evidence": []
2026-06-21T08:38:15.0451310Z         },
2026-06-21T08:38:15.0451415Z         "impl": {
2026-06-21T08:38:15.0451533Z           "complete": true,
2026-06-21T08:38:15.0451632Z           "evidence": [
2026-06-21T08:38:15.0451727Z             {
2026-06-21T08:38:15.0451875Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0451994Z               "line": 116
2026-06-21T08:38:15.0452095Z             },
2026-06-21T08:38:15.0452195Z             {
2026-06-21T08:38:15.0452348Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.0452457Z               "line": 507
2026-06-21T08:38:15.0452701Z             }
2026-06-21T08:38:15.0452805Z           ]
2026-06-21T08:38:15.0452910Z         },
2026-06-21T08:38:15.0453105Z         "int": {
2026-06-21T08:38:15.0453220Z           "complete": false,
2026-06-21T08:38:15.0453326Z           "evidence": []
2026-06-21T08:38:15.0453416Z         },
2026-06-21T08:38:15.0453520Z         "unit": {
2026-06-21T08:38:15.0453631Z           "complete": true,
2026-06-21T08:38:15.0453740Z           "evidence": [
2026-06-21T08:38:15.0453845Z             {
2026-06-21T08:38:15.0454004Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.0454116Z               "line": 541
2026-06-21T08:38:15.0454215Z             }
2026-06-21T08:38:15.0454321Z           ]
2026-06-21T08:38:15.0454418Z         }
2026-06-21T08:38:15.0454518Z       }
2026-06-21T08:38:15.0454619Z     },
2026-06-21T08:38:15.0454719Z     {
2026-06-21T08:38:15.0454871Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T08:38:15.0455062Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T08:38:15.0455190Z       "requiredStages": [
2026-06-21T08:38:15.0455306Z         "impl",
2026-06-21T08:38:15.0455410Z         "unit"
2026-06-21T08:38:15.0455515Z       ],
2026-06-21T08:38:15.0455625Z       "stages": {
2026-06-21T08:38:15.0455730Z         "doc": {
2026-06-21T08:38:15.0455849Z           "complete": false,
2026-06-21T08:38:15.0455968Z           "evidence": []
2026-06-21T08:38:15.0456073Z         },
2026-06-21T08:38:15.0456183Z         "impl": {
2026-06-21T08:38:15.0456307Z           "complete": true,
2026-06-21T08:38:15.0456416Z           "evidence": [
2026-06-21T08:38:15.0456527Z             {
2026-06-21T08:38:15.0456678Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0456782Z               "line": 552
2026-06-21T08:38:15.0456882Z             },
2026-06-21T08:38:15.0456990Z             {
2026-06-21T08:38:15.0457137Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0457243Z               "line": 28
2026-06-21T08:38:15.0457352Z             }
2026-06-21T08:38:15.0457452Z           ]
2026-06-21T08:38:15.0457568Z         },
2026-06-21T08:38:15.0457671Z         "int": {
2026-06-21T08:38:15.0457801Z           "complete": false,
2026-06-21T08:38:15.0457911Z           "evidence": []
2026-06-21T08:38:15.0458005Z         },
2026-06-21T08:38:15.0458111Z         "unit": {
2026-06-21T08:38:15.0458216Z           "complete": true,
2026-06-21T08:38:15.0458329Z           "evidence": [
2026-06-21T08:38:15.0458435Z             {
2026-06-21T08:38:15.0458587Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0458697Z               "line": 229
2026-06-21T08:38:15.0458802Z             }
2026-06-21T08:38:15.0458906Z           ]
2026-06-21T08:38:15.0459089Z         }
2026-06-21T08:38:15.0459202Z       }
2026-06-21T08:38:15.0459303Z     },
2026-06-21T08:38:15.0459414Z     {
2026-06-21T08:38:15.0459550Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T08:38:15.0459726Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T08:38:15.0459855Z       "requiredStages": [],
2026-06-21T08:38:15.0459968Z       "stages": {
2026-06-21T08:38:15.0460074Z         "doc": {
2026-06-21T08:38:15.0460184Z           "complete": false,
2026-06-21T08:38:15.0460307Z           "evidence": []
2026-06-21T08:38:15.0460413Z         },
2026-06-21T08:38:15.0460523Z         "impl": {
2026-06-21T08:38:15.0460641Z           "complete": false,
2026-06-21T08:38:15.0460751Z           "evidence": []
2026-06-21T08:38:15.0460852Z         },
2026-06-21T08:38:15.0460956Z         "int": {
2026-06-21T08:38:15.0461081Z           "complete": false,
2026-06-21T08:38:15.0461199Z           "evidence": []
2026-06-21T08:38:15.0461295Z         },
2026-06-21T08:38:15.0461405Z         "unit": {
2026-06-21T08:38:15.0461514Z           "complete": false,
2026-06-21T08:38:15.0461624Z           "evidence": []
2026-06-21T08:38:15.0461724Z         }
2026-06-21T08:38:15.0461832Z       }
2026-06-21T08:38:15.0461932Z     },
2026-06-21T08:38:15.0462149Z     {
2026-06-21T08:38:15.0462292Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T08:38:15.0462569Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T08:38:15.0462693Z       "requiredStages": [
2026-06-21T08:38:15.0462797Z         "impl",
2026-06-21T08:38:15.0462908Z         "unit"
2026-06-21T08:38:15.0463008Z       ],
2026-06-21T08:38:15.0463112Z       "stages": {
2026-06-21T08:38:15.0463223Z         "doc": {
2026-06-21T08:38:15.0463337Z           "complete": false,
2026-06-21T08:38:15.0463450Z           "evidence": []
2026-06-21T08:38:15.0463542Z         },
2026-06-21T08:38:15.0463652Z         "impl": {
2026-06-21T08:38:15.0463770Z           "complete": true,
2026-06-21T08:38:15.0463886Z           "evidence": [
2026-06-21T08:38:15.0463990Z             {
2026-06-21T08:38:15.0464133Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T08:38:15.0464244Z               "line": 19
2026-06-21T08:38:15.0464342Z             },
2026-06-21T08:38:15.0464453Z             {
2026-06-21T08:38:15.0464611Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0464733Z               "line": 463
2026-06-21T08:38:15.0464833Z             },
2026-06-21T08:38:15.0464937Z             {
2026-06-21T08:38:15.0465088Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0465193Z               "line": 499
2026-06-21T08:38:15.0465303Z             },
2026-06-21T08:38:15.0465412Z             {
2026-06-21T08:38:15.0465556Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0465669Z               "line": 547
2026-06-21T08:38:15.0465765Z             },
2026-06-21T08:38:15.0465866Z             {
2026-06-21T08:38:15.0465998Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:15.0466118Z               "line": 15
2026-06-21T08:38:15.0466227Z             },
2026-06-21T08:38:15.0466332Z             {
2026-06-21T08:38:15.0466482Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:15.0466599Z               "line": 48
2026-06-21T08:38:15.0466699Z             },
2026-06-21T08:38:15.0466806Z             {
2026-06-21T08:38:15.0466943Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:15.0467054Z               "line": 119
2026-06-21T08:38:15.0467158Z             },
2026-06-21T08:38:15.0467266Z             {
2026-06-21T08:38:15.0467394Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0467503Z               "line": 3948
2026-06-21T08:38:15.0467607Z             }
2026-06-21T08:38:15.0467702Z           ]
2026-06-21T08:38:15.0467803Z         },
2026-06-21T08:38:15.0467903Z         "int": {
2026-06-21T08:38:15.0468031Z           "complete": false,
2026-06-21T08:38:15.0468132Z           "evidence": []
2026-06-21T08:38:15.0468231Z         },
2026-06-21T08:38:15.0468332Z         "unit": {
2026-06-21T08:38:15.0468442Z           "complete": true,
2026-06-21T08:38:15.0468556Z           "evidence": [
2026-06-21T08:38:15.0468652Z             {
2026-06-21T08:38:15.0468809Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0468918Z               "line": 765
2026-06-21T08:38:15.0469105Z             },
2026-06-21T08:38:15.0469204Z             {
2026-06-21T08:38:15.0469349Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:15.0469481Z               "line": 165
2026-06-21T08:38:15.0469581Z             },
2026-06-21T08:38:15.0469682Z             {
2026-06-21T08:38:15.0469824Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T08:38:15.0469940Z               "line": 175
2026-06-21T08:38:15.0470044Z             }
2026-06-21T08:38:15.0470148Z           ]
2026-06-21T08:38:15.0470247Z         }
2026-06-21T08:38:15.0470344Z       }
2026-06-21T08:38:15.0470448Z     },
2026-06-21T08:38:15.0470553Z     {
2026-06-21T08:38:15.0470692Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T08:38:15.0471646Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T08:38:15.0471984Z       "requiredStages": [
2026-06-21T08:38:15.0472093Z         "impl",
2026-06-21T08:38:15.0472194Z         "unit"
2026-06-21T08:38:15.0472299Z       ],
2026-06-21T08:38:15.0472397Z       "stages": {
2026-06-21T08:38:15.0472507Z         "doc": {
2026-06-21T08:38:15.0472625Z           "complete": false,
2026-06-21T08:38:15.0472738Z           "evidence": []
2026-06-21T08:38:15.0472843Z         },
2026-06-21T08:38:15.0472944Z         "impl": {
2026-06-21T08:38:15.0473067Z           "complete": true,
2026-06-21T08:38:15.0473177Z           "evidence": [
2026-06-21T08:38:15.0473282Z             {
2026-06-21T08:38:15.0473429Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0473545Z               "line": 192
2026-06-21T08:38:15.0473649Z             },
2026-06-21T08:38:15.0473758Z             {
2026-06-21T08:38:15.0473907Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0474025Z               "line": 279
2026-06-21T08:38:15.0474131Z             }
2026-06-21T08:38:15.0474235Z           ]
2026-06-21T08:38:15.0474330Z         },
2026-06-21T08:38:15.0474437Z         "int": {
2026-06-21T08:38:15.0474550Z           "complete": false,
2026-06-21T08:38:15.0474669Z           "evidence": []
2026-06-21T08:38:15.0474770Z         },
2026-06-21T08:38:15.0474879Z         "unit": {
2026-06-21T08:38:15.0475003Z           "complete": true,
2026-06-21T08:38:15.0475114Z           "evidence": [
2026-06-21T08:38:15.0475208Z             {
2026-06-21T08:38:15.0475354Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0475460Z               "line": 470
2026-06-21T08:38:15.0475562Z             },
2026-06-21T08:38:15.0475667Z             {
2026-06-21T08:38:15.0475811Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.0475929Z               "line": 526
2026-06-21T08:38:15.0476039Z             }
2026-06-21T08:38:15.0476144Z           ]
2026-06-21T08:38:15.0476239Z         }
2026-06-21T08:38:15.0476335Z       }
2026-06-21T08:38:15.0476445Z     },
2026-06-21T08:38:15.0476549Z     {
2026-06-21T08:38:15.0476693Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T08:38:15.0480637Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T08:38:15.0480803Z       "requiredStages": [
2026-06-21T08:38:15.0480899Z         "impl",
2026-06-21T08:38:15.0481003Z         "unit",
2026-06-21T08:38:15.0481108Z         "int"
2026-06-21T08:38:15.0481209Z       ],
2026-06-21T08:38:15.0481314Z       "stages": {
2026-06-21T08:38:15.0481417Z         "doc": {
2026-06-21T08:38:15.0481543Z           "complete": false,
2026-06-21T08:38:15.0481757Z           "evidence": []
2026-06-21T08:38:15.0481853Z         },
2026-06-21T08:38:15.0481962Z         "impl": {
2026-06-21T08:38:15.0482168Z           "complete": true,
2026-06-21T08:38:15.0482286Z           "evidence": [
2026-06-21T08:38:15.0482391Z             {
2026-06-21T08:38:15.0482563Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0482668Z               "line": 116
2026-06-21T08:38:15.0482774Z             },
2026-06-21T08:38:15.0482882Z             {
2026-06-21T08:38:15.0483033Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.0483143Z               "line": 132
2026-06-21T08:38:15.0483246Z             },
2026-06-21T08:38:15.0483350Z             {
2026-06-21T08:38:15.0483499Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.0483612Z               "line": 434
2026-06-21T08:38:15.0483718Z             },
2026-06-21T08:38:15.0483823Z             {
2026-06-21T08:38:15.0483984Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0484091Z               "line": 139
2026-06-21T08:38:15.0484204Z             },
2026-06-21T08:38:15.0484304Z             {
2026-06-21T08:38:15.0484453Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0484567Z               "line": 326
2026-06-21T08:38:15.0484672Z             },
2026-06-21T08:38:15.0484777Z             {
2026-06-21T08:38:15.0484919Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0485030Z               "line": 555
2026-06-21T08:38:15.0485139Z             }
2026-06-21T08:38:15.0485243Z           ]
2026-06-21T08:38:15.0485350Z         },
2026-06-21T08:38:15.0485453Z         "int": {
2026-06-21T08:38:15.0485573Z           "complete": true,
2026-06-21T08:38:15.0485674Z           "evidence": [
2026-06-21T08:38:15.0485778Z             {
2026-06-21T08:38:15.0485958Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T08:38:15.0486076Z               "line": 32
2026-06-21T08:38:15.0486184Z             }
2026-06-21T08:38:15.0486285Z           ]
2026-06-21T08:38:15.0486400Z         },
2026-06-21T08:38:15.0486508Z         "unit": {
2026-06-21T08:38:15.0486629Z           "complete": true,
2026-06-21T08:38:15.0486739Z           "evidence": [
2026-06-21T08:38:15.0486847Z             {
2026-06-21T08:38:15.0486996Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0487100Z               "line": 625
2026-06-21T08:38:15.0487205Z             },
2026-06-21T08:38:15.0487311Z             {
2026-06-21T08:38:15.0487462Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0487573Z               "line": 646
2026-06-21T08:38:15.0487677Z             },
2026-06-21T08:38:15.0487781Z             {
2026-06-21T08:38:15.0487926Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0488039Z               "line": 662
2026-06-21T08:38:15.0488135Z             },
2026-06-21T08:38:15.0488246Z             {
2026-06-21T08:38:15.0488396Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0488524Z               "line": 680
2026-06-21T08:38:15.0488629Z             },
2026-06-21T08:38:15.0488732Z             {
2026-06-21T08:38:15.0488885Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0489075Z               "line": 704
2026-06-21T08:38:15.0489181Z             }
2026-06-21T08:38:15.0489286Z           ]
2026-06-21T08:38:15.0489404Z         }
2026-06-21T08:38:15.0489506Z       }
2026-06-21T08:38:15.0489600Z     },
2026-06-21T08:38:15.0489700Z     {
2026-06-21T08:38:15.0489835Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T08:38:15.0490024Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T08:38:15.0490154Z       "requiredStages": [
2026-06-21T08:38:15.0490258Z         "impl",
2026-06-21T08:38:15.0490363Z         "unit"
2026-06-21T08:38:15.0490464Z       ],
2026-06-21T08:38:15.0490577Z       "stages": {
2026-06-21T08:38:15.0490779Z         "doc": {
2026-06-21T08:38:15.0490906Z           "complete": false,
2026-06-21T08:38:15.0491016Z           "evidence": []
2026-06-21T08:38:15.0491206Z         },
2026-06-21T08:38:15.0491315Z         "impl": {
2026-06-21T08:38:15.0491430Z           "complete": true,
2026-06-21T08:38:15.0491549Z           "evidence": [
2026-06-21T08:38:15.0491653Z             {
2026-06-21T08:38:15.0491812Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:15.0491916Z               "line": 35
2026-06-21T08:38:15.0492021Z             }
2026-06-21T08:38:15.0492126Z           ]
2026-06-21T08:38:15.0492231Z         },
2026-06-21T08:38:15.0492336Z         "int": {
2026-06-21T08:38:15.0492451Z           "complete": false,
2026-06-21T08:38:15.0492555Z           "evidence": []
2026-06-21T08:38:15.0492661Z         },
2026-06-21T08:38:15.0492766Z         "unit": {
2026-06-21T08:38:15.0492889Z           "complete": true,
2026-06-21T08:38:15.0492995Z           "evidence": [
2026-06-21T08:38:15.0493113Z             {
2026-06-21T08:38:15.0493261Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T08:38:15.0493376Z               "line": 220
2026-06-21T08:38:15.0493485Z             }
2026-06-21T08:38:15.0493589Z           ]
2026-06-21T08:38:15.0493689Z         }
2026-06-21T08:38:15.0493792Z       }
2026-06-21T08:38:15.0493896Z     },
2026-06-21T08:38:15.0494001Z     {
2026-06-21T08:38:15.0494154Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T08:38:15.0497299Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T08:38:15.0497475Z       "requiredStages": [
2026-06-21T08:38:15.0497580Z         "impl",
2026-06-21T08:38:15.0497679Z         "unit",
2026-06-21T08:38:15.0497784Z         "int"
2026-06-21T08:38:15.0497890Z       ],
2026-06-21T08:38:15.0497999Z       "stages": {
2026-06-21T08:38:15.0498109Z         "doc": {
2026-06-21T08:38:15.0498237Z           "complete": false,
2026-06-21T08:38:15.0498337Z           "evidence": []
2026-06-21T08:38:15.0498448Z         },
2026-06-21T08:38:15.0498552Z         "impl": {
2026-06-21T08:38:15.0498671Z           "complete": true,
2026-06-21T08:38:15.0498787Z           "evidence": [
2026-06-21T08:38:15.0498881Z             {
2026-06-21T08:38:15.0499108Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0499212Z               "line": 202
2026-06-21T08:38:15.0499325Z             },
2026-06-21T08:38:15.0499435Z             {
2026-06-21T08:38:15.0499588Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T08:38:15.0499693Z               "line": 107
2026-06-21T08:38:15.0499803Z             },
2026-06-21T08:38:15.0499912Z             {
2026-06-21T08:38:15.0500056Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T08:38:15.0500175Z               "line": 138
2026-06-21T08:38:15.0500279Z             },
2026-06-21T08:38:15.0500385Z             {
2026-06-21T08:38:15.0500528Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0500748Z               "line": 209
2026-06-21T08:38:15.0500852Z             },
2026-06-21T08:38:15.0500961Z             {
2026-06-21T08:38:15.0501213Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0501315Z               "line": 246
2026-06-21T08:38:15.0501424Z             },
2026-06-21T08:38:15.0501528Z             {
2026-06-21T08:38:15.0501678Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0501785Z               "line": 379
2026-06-21T08:38:15.0501894Z             }
2026-06-21T08:38:15.0501995Z           ]
2026-06-21T08:38:15.0502096Z         },
2026-06-21T08:38:15.0502200Z         "int": {
2026-06-21T08:38:15.0502320Z           "complete": true,
2026-06-21T08:38:15.0502429Z           "evidence": [
2026-06-21T08:38:15.0502552Z             {
2026-06-21T08:38:15.0502725Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T08:38:15.0502853Z               "line": 17
2026-06-21T08:38:15.0502954Z             }
2026-06-21T08:38:15.0503082Z           ]
2026-06-21T08:38:15.0503186Z         },
2026-06-21T08:38:15.0503293Z         "unit": {
2026-06-21T08:38:15.0503421Z           "complete": true,
2026-06-21T08:38:15.0503526Z           "evidence": [
2026-06-21T08:38:15.0503631Z             {
2026-06-21T08:38:15.0503783Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0503894Z               "line": 982
2026-06-21T08:38:15.0504016Z             }
2026-06-21T08:38:15.0504120Z           ]
2026-06-21T08:38:15.0504226Z         }
2026-06-21T08:38:15.0504329Z       }
2026-06-21T08:38:15.0504432Z     },
2026-06-21T08:38:15.0504543Z     {
2026-06-21T08:38:15.0504695Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T08:38:15.0505015Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T08:38:15.0505139Z       "requiredStages": [
2026-06-21T08:38:15.0505239Z         "impl",
2026-06-21T08:38:15.0505348Z         "unit"
2026-06-21T08:38:15.0505463Z       ],
2026-06-21T08:38:15.0505568Z       "stages": {
2026-06-21T08:38:15.0505682Z         "doc": {
2026-06-21T08:38:15.0505807Z           "complete": false,
2026-06-21T08:38:15.0505925Z           "evidence": []
2026-06-21T08:38:15.0506044Z         },
2026-06-21T08:38:15.0506155Z         "impl": {
2026-06-21T08:38:15.0506283Z           "complete": true,
2026-06-21T08:38:15.0506403Z           "evidence": [
2026-06-21T08:38:15.0506517Z             {
2026-06-21T08:38:15.0506683Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.0506790Z               "line": 405
2026-06-21T08:38:15.0506902Z             },
2026-06-21T08:38:15.0507011Z             {
2026-06-21T08:38:15.0507173Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.0507295Z               "line": 409
2026-06-21T08:38:15.0507410Z             },
2026-06-21T08:38:15.0507530Z             {
2026-06-21T08:38:15.0507686Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.0507825Z               "line": 156
2026-06-21T08:38:15.0507929Z             }
2026-06-21T08:38:15.0508035Z           ]
2026-06-21T08:38:15.0508149Z         },
2026-06-21T08:38:15.0508253Z         "int": {
2026-06-21T08:38:15.0508379Z           "complete": false,
2026-06-21T08:38:15.0508483Z           "evidence": []
2026-06-21T08:38:15.0508587Z         },
2026-06-21T08:38:15.0508693Z         "unit": {
2026-06-21T08:38:15.0508816Z           "complete": true,
2026-06-21T08:38:15.0508916Z           "evidence": [
2026-06-21T08:38:15.0509103Z             {
2026-06-21T08:38:15.0509255Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.0509375Z               "line": 865
2026-06-21T08:38:15.0509502Z             },
2026-06-21T08:38:15.0509611Z             {
2026-06-21T08:38:15.0509763Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.0509861Z               "line": 879
2026-06-21T08:38:15.0509986Z             },
2026-06-21T08:38:15.0510101Z             {
2026-06-21T08:38:15.0510368Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.0510495Z               "line": 898
2026-06-21T08:38:15.0510730Z             },
2026-06-21T08:38:15.0510844Z             {
2026-06-21T08:38:15.0511002Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.0511121Z               "line": 915
2026-06-21T08:38:15.0511221Z             },
2026-06-21T08:38:15.0511326Z             {
2026-06-21T08:38:15.0511502Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T08:38:15.0511623Z               "line": 441
2026-06-21T08:38:15.0511736Z             }
2026-06-21T08:38:15.0511841Z           ]
2026-06-21T08:38:15.0511952Z         }
2026-06-21T08:38:15.0512060Z       }
2026-06-21T08:38:15.0512161Z     },
2026-06-21T08:38:15.0512271Z     {
2026-06-21T08:38:15.0512426Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T08:38:15.0522600Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T08:38:15.0522977Z       "requiredStages": [
2026-06-21T08:38:15.0523091Z         "doc",
2026-06-21T08:38:15.0523296Z         "impl",
2026-06-21T08:38:15.0523402Z         "unit",
2026-06-21T08:38:15.0523516Z         "int"
2026-06-21T08:38:15.0523625Z       ],
2026-06-21T08:38:15.0523726Z       "stages": {
2026-06-21T08:38:15.0523840Z         "doc": {
2026-06-21T08:38:15.0523959Z           "complete": true,
2026-06-21T08:38:15.0524070Z           "evidence": [
2026-06-21T08:38:15.0524173Z             {
2026-06-21T08:38:15.0524307Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0524413Z               "line": 420
2026-06-21T08:38:15.0524517Z             },
2026-06-21T08:38:15.0524622Z             {
2026-06-21T08:38:15.0524756Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0524875Z               "line": 402
2026-06-21T08:38:15.0524980Z             }
2026-06-21T08:38:15.0525095Z           ]
2026-06-21T08:38:15.0525203Z         },
2026-06-21T08:38:15.0525308Z         "impl": {
2026-06-21T08:38:15.0525426Z           "complete": true,
2026-06-21T08:38:15.0525539Z           "evidence": [
2026-06-21T08:38:15.0525653Z             {
2026-06-21T08:38:15.0525810Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0525935Z               "line": 797
2026-06-21T08:38:15.0526035Z             },
2026-06-21T08:38:15.0526144Z             {
2026-06-21T08:38:15.0526298Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0526412Z               "line": 822
2026-06-21T08:38:15.0526526Z             },
2026-06-21T08:38:15.0526627Z             {
2026-06-21T08:38:15.0526778Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0526898Z               "line": 839
2026-06-21T08:38:15.0527003Z             },
2026-06-21T08:38:15.0527112Z             {
2026-06-21T08:38:15.0527252Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0527370Z               "line": 854
2026-06-21T08:38:15.0527465Z             },
2026-06-21T08:38:15.0527576Z             {
2026-06-21T08:38:15.0527722Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0527838Z               "line": 874
2026-06-21T08:38:15.0527943Z             },
2026-06-21T08:38:15.0528051Z             {
2026-06-21T08:38:15.0528203Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0528330Z               "line": 964
2026-06-21T08:38:15.0528434Z             },
2026-06-21T08:38:15.0528540Z             {
2026-06-21T08:38:15.0528678Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0528792Z               "line": 1016
2026-06-21T08:38:15.0528893Z             },
2026-06-21T08:38:15.0529083Z             {
2026-06-21T08:38:15.0529231Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0529350Z               "line": 1075
2026-06-21T08:38:15.0529455Z             },
2026-06-21T08:38:15.0529556Z             {
2026-06-21T08:38:15.0529713Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0529824Z               "line": 527
2026-06-21T08:38:15.0529932Z             }
2026-06-21T08:38:15.0530041Z           ]
2026-06-21T08:38:15.0530148Z         },
2026-06-21T08:38:15.0530256Z         "int": {
2026-06-21T08:38:15.0530375Z           "complete": true,
2026-06-21T08:38:15.0530491Z           "evidence": [
2026-06-21T08:38:15.0530594Z             {
2026-06-21T08:38:15.0530751Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T08:38:15.0530869Z               "line": 35
2026-06-21T08:38:15.0530977Z             },
2026-06-21T08:38:15.0531082Z             {
2026-06-21T08:38:15.0531226Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T08:38:15.0531339Z               "line": 569
2026-06-21T08:38:15.0531441Z             },
2026-06-21T08:38:15.0531560Z             {
2026-06-21T08:38:15.0531707Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T08:38:15.0531822Z               "line": 590
2026-06-21T08:38:15.0532056Z             }
2026-06-21T08:38:15.0532160Z           ]
2026-06-21T08:38:15.0532269Z         },
2026-06-21T08:38:15.0532456Z         "unit": {
2026-06-21T08:38:15.0532575Z           "complete": true,
2026-06-21T08:38:15.0532700Z           "evidence": [
2026-06-21T08:38:15.0532804Z             {
2026-06-21T08:38:15.0532957Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0533072Z               "line": 1202
2026-06-21T08:38:15.0533175Z             },
2026-06-21T08:38:15.0533277Z             {
2026-06-21T08:38:15.0533429Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0533537Z               "line": 1246
2026-06-21T08:38:15.0533647Z             },
2026-06-21T08:38:15.0533748Z             {
2026-06-21T08:38:15.0533889Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0534000Z               "line": 1260
2026-06-21T08:38:15.0534105Z             },
2026-06-21T08:38:15.0534214Z             {
2026-06-21T08:38:15.0534367Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0534486Z               "line": 1278
2026-06-21T08:38:15.0534596Z             },
2026-06-21T08:38:15.0534696Z             {
2026-06-21T08:38:15.0534843Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0534949Z               "line": 1302
2026-06-21T08:38:15.0535062Z             },
2026-06-21T08:38:15.0535167Z             {
2026-06-21T08:38:15.0535312Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0535430Z               "line": 1529
2026-06-21T08:38:15.0535530Z             }
2026-06-21T08:38:15.0535631Z           ]
2026-06-21T08:38:15.0535734Z         }
2026-06-21T08:38:15.0535843Z       }
2026-06-21T08:38:15.0535954Z     },
2026-06-21T08:38:15.0536051Z     {
2026-06-21T08:38:15.0536199Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T08:38:15.0538393Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T08:38:15.0538541Z       "requiredStages": [
2026-06-21T08:38:15.0538654Z         "unit",
2026-06-21T08:38:15.0538754Z         "int"
2026-06-21T08:38:15.0538863Z       ],
2026-06-21T08:38:15.0539047Z       "stages": {
2026-06-21T08:38:15.0539143Z         "doc": {
2026-06-21T08:38:15.0539262Z           "complete": true,
2026-06-21T08:38:15.0539366Z           "evidence": [
2026-06-21T08:38:15.0539500Z             {
2026-06-21T08:38:15.0539671Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0539787Z               "line": 381
2026-06-21T08:38:15.0539891Z             }
2026-06-21T08:38:15.0539996Z           ]
2026-06-21T08:38:15.0540106Z         },
2026-06-21T08:38:15.0540211Z         "impl": {
2026-06-21T08:38:15.0540335Z           "complete": true,
2026-06-21T08:38:15.0540449Z           "evidence": [
2026-06-21T08:38:15.0540558Z             {
2026-06-21T08:38:15.0540703Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0540816Z               "line": 135
2026-06-21T08:38:15.0540912Z             }
2026-06-21T08:38:15.0541018Z           ]
2026-06-21T08:38:15.0541117Z         },
2026-06-21T08:38:15.0541220Z         "int": {
2026-06-21T08:38:15.0541349Z           "complete": true,
2026-06-21T08:38:15.0541457Z           "evidence": [
2026-06-21T08:38:15.0541565Z             {
2026-06-21T08:38:15.0541729Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0541947Z               "line": 1042
2026-06-21T08:38:15.0542053Z             }
2026-06-21T08:38:15.0542253Z           ]
2026-06-21T08:38:15.0542358Z         },
2026-06-21T08:38:15.0542472Z         "unit": {
2026-06-21T08:38:15.0542577Z           "complete": true,
2026-06-21T08:38:15.0542697Z           "evidence": [
2026-06-21T08:38:15.0542801Z             {
2026-06-21T08:38:15.0542955Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.0543064Z               "line": 2370
2026-06-21T08:38:15.0543173Z             }
2026-06-21T08:38:15.0543284Z           ]
2026-06-21T08:38:15.0543383Z         }
2026-06-21T08:38:15.0543497Z       }
2026-06-21T08:38:15.0543599Z     },
2026-06-21T08:38:15.0543707Z     {
2026-06-21T08:38:15.0543842Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T08:38:15.0544689Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T08:38:15.0548023Z       "requiredStages": [
2026-06-21T08:38:15.0548161Z         "doc",
2026-06-21T08:38:15.0548266Z         "impl",
2026-06-21T08:38:15.0548372Z         "unit"
2026-06-21T08:38:15.0548485Z       ],
2026-06-21T08:38:15.0548590Z       "stages": {
2026-06-21T08:38:15.0548696Z         "doc": {
2026-06-21T08:38:15.0548823Z           "complete": true,
2026-06-21T08:38:15.0548929Z           "evidence": [
2026-06-21T08:38:15.0549115Z             {
2026-06-21T08:38:15.0549252Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0549381Z               "line": 366
2026-06-21T08:38:15.0549493Z             }
2026-06-21T08:38:15.0549597Z           ]
2026-06-21T08:38:15.0549708Z         },
2026-06-21T08:38:15.0549817Z         "impl": {
2026-06-21T08:38:15.0549936Z           "complete": true,
2026-06-21T08:38:15.0550037Z           "evidence": [
2026-06-21T08:38:15.0550160Z             {
2026-06-21T08:38:15.0550319Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.0550433Z               "line": 87
2026-06-21T08:38:15.0550537Z             },
2026-06-21T08:38:15.0550638Z             {
2026-06-21T08:38:15.0550794Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0550910Z               "line": 105
2026-06-21T08:38:15.0551014Z             },
2026-06-21T08:38:15.0551114Z             {
2026-06-21T08:38:15.0551277Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.0551385Z               "line": 55
2026-06-21T08:38:15.0551491Z             },
2026-06-21T08:38:15.0551597Z             {
2026-06-21T08:38:15.0551747Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.0551862Z               "line": 31
2026-06-21T08:38:15.0551961Z             },
2026-06-21T08:38:15.0552069Z             {
2026-06-21T08:38:15.0552217Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.0552332Z               "line": 446
2026-06-21T08:38:15.0552441Z             },
2026-06-21T08:38:15.0552547Z             {
2026-06-21T08:38:15.0552698Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.0552808Z               "line": 95
2026-06-21T08:38:15.0552918Z             },
2026-06-21T08:38:15.0553027Z             {
2026-06-21T08:38:15.0553176Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.0553285Z               "line": 29
2026-06-21T08:38:15.0553390Z             },
2026-06-21T08:38:15.0553496Z             {
2026-06-21T08:38:15.0553647Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.0553757Z               "line": 104
2026-06-21T08:38:15.0553858Z             },
2026-06-21T08:38:15.0553967Z             {
2026-06-21T08:38:15.0554135Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0554243Z               "line": 208
2026-06-21T08:38:15.0554349Z             },
2026-06-21T08:38:15.0554619Z             {
2026-06-21T08:38:15.0554762Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T08:38:15.0554981Z               "line": 28
2026-06-21T08:38:15.0555087Z             },
2026-06-21T08:38:15.0555197Z             {
2026-06-21T08:38:15.0555343Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T08:38:15.0555464Z               "line": 74
2026-06-21T08:38:15.0555559Z             },
2026-06-21T08:38:15.0555658Z             {
2026-06-21T08:38:15.0555816Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T08:38:15.0555930Z               "line": 32
2026-06-21T08:38:15.0556031Z             },
2026-06-21T08:38:15.0556136Z             {
2026-06-21T08:38:15.0556292Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0556403Z               "line": 40
2026-06-21T08:38:15.0556507Z             },
2026-06-21T08:38:15.0556612Z             {
2026-06-21T08:38:15.0556761Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0556907Z               "line": 184
2026-06-21T08:38:15.0557017Z             },
2026-06-21T08:38:15.0557144Z             {
2026-06-21T08:38:15.0557300Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.0557411Z               "line": 61
2026-06-21T08:38:15.0557515Z             },
2026-06-21T08:38:15.0557615Z             {
2026-06-21T08:38:15.0557758Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.0557867Z               "line": 131
2026-06-21T08:38:15.0557983Z             },
2026-06-21T08:38:15.0558087Z             {
2026-06-21T08:38:15.0558235Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.0558355Z               "line": 223
2026-06-21T08:38:15.0558459Z             },
2026-06-21T08:38:15.0558568Z             {
2026-06-21T08:38:15.0558702Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T08:38:15.0558816Z               "line": 37
2026-06-21T08:38:15.0558923Z             },
2026-06-21T08:38:15.0559108Z             {
2026-06-21T08:38:15.0559261Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.0559384Z               "line": 38
2026-06-21T08:38:15.0559494Z             },
2026-06-21T08:38:15.0559600Z             {
2026-06-21T08:38:15.0559745Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T08:38:15.0559865Z               "line": 36
2026-06-21T08:38:15.0559964Z             },
2026-06-21T08:38:15.0560072Z             {
2026-06-21T08:38:15.0560215Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T08:38:15.0560331Z               "line": 40
2026-06-21T08:38:15.0560444Z             }
2026-06-21T08:38:15.0560545Z           ]
2026-06-21T08:38:15.0560640Z         },
2026-06-21T08:38:15.0560739Z         "int": {
2026-06-21T08:38:15.0560864Z           "complete": false,
2026-06-21T08:38:15.0560974Z           "evidence": []
2026-06-21T08:38:15.0561082Z         },
2026-06-21T08:38:15.0561189Z         "unit": {
2026-06-21T08:38:15.0561312Z           "complete": true,
2026-06-21T08:38:15.0561426Z           "evidence": [
2026-06-21T08:38:15.0561532Z             {
2026-06-21T08:38:15.0561693Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.0561799Z               "line": 212
2026-06-21T08:38:15.0561903Z             },
2026-06-21T08:38:15.0562008Z             {
2026-06-21T08:38:15.0562162Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T08:38:15.0562269Z               "line": 136
2026-06-21T08:38:15.0562373Z             },
2026-06-21T08:38:15.0562484Z             {
2026-06-21T08:38:15.0562629Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T08:38:15.0562749Z               "line": 685
2026-06-21T08:38:15.0562854Z             },
2026-06-21T08:38:15.0562953Z             {
2026-06-21T08:38:15.0563102Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T08:38:15.0563212Z               "line": 224
2026-06-21T08:38:15.0563320Z             },
2026-06-21T08:38:15.0563521Z             {
2026-06-21T08:38:15.0563663Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T08:38:15.0563864Z               "line": 206
2026-06-21T08:38:15.0563969Z             },
2026-06-21T08:38:15.0564075Z             {
2026-06-21T08:38:15.0564222Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T08:38:15.0564332Z               "line": 112
2026-06-21T08:38:15.0564437Z             },
2026-06-21T08:38:15.0564541Z             {
2026-06-21T08:38:15.0564685Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T08:38:15.0564789Z               "line": 157
2026-06-21T08:38:15.0564899Z             },
2026-06-21T08:38:15.0564995Z             {
2026-06-21T08:38:15.0565146Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.0565255Z               "line": 215
2026-06-21T08:38:15.0565361Z             },
2026-06-21T08:38:15.0565475Z             {
2026-06-21T08:38:15.0565623Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T08:38:15.0565771Z               "line": 141
2026-06-21T08:38:15.0565875Z             },
2026-06-21T08:38:15.0565991Z             {
2026-06-21T08:38:15.0566133Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T08:38:15.0566257Z               "line": 162
2026-06-21T08:38:15.0566362Z             }
2026-06-21T08:38:15.0566462Z           ]
2026-06-21T08:38:15.0566572Z         }
2026-06-21T08:38:15.0566672Z       }
2026-06-21T08:38:15.0566782Z     },
2026-06-21T08:38:15.0566887Z     {
2026-06-21T08:38:15.0567044Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T08:38:15.0569071Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T08:38:15.0569210Z       "requiredStages": [
2026-06-21T08:38:15.0569315Z         "doc",
2026-06-21T08:38:15.0569434Z         "impl",
2026-06-21T08:38:15.0569549Z         "unit",
2026-06-21T08:38:15.0569658Z         "int"
2026-06-21T08:38:15.0569759Z       ],
2026-06-21T08:38:15.0569874Z       "stages": {
2026-06-21T08:38:15.0569982Z         "doc": {
2026-06-21T08:38:15.0570107Z           "complete": true,
2026-06-21T08:38:15.0570221Z           "evidence": [
2026-06-21T08:38:15.0570324Z             {
2026-06-21T08:38:15.0570468Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.0570571Z               "line": 250
2026-06-21T08:38:15.0570679Z             }
2026-06-21T08:38:15.0570780Z           ]
2026-06-21T08:38:15.0570891Z         },
2026-06-21T08:38:15.0571004Z         "impl": {
2026-06-21T08:38:15.0571110Z           "complete": true,
2026-06-21T08:38:15.0571220Z           "evidence": [
2026-06-21T08:38:15.0571323Z             {
2026-06-21T08:38:15.0571472Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T08:38:15.0571586Z               "line": 135
2026-06-21T08:38:15.0571691Z             },
2026-06-21T08:38:15.0571801Z             {
2026-06-21T08:38:15.0571938Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T08:38:15.0572054Z               "line": 157
2026-06-21T08:38:15.0572163Z             }
2026-06-21T08:38:15.0572262Z           ]
2026-06-21T08:38:15.0572355Z         },
2026-06-21T08:38:15.0572459Z         "int": {
2026-06-21T08:38:15.0572582Z           "complete": true,
2026-06-21T08:38:15.0572693Z           "evidence": [
2026-06-21T08:38:15.0572802Z             {
2026-06-21T08:38:15.0572957Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T08:38:15.0573077Z               "line": 15
2026-06-21T08:38:15.0573314Z             }
2026-06-21T08:38:15.0573409Z           ]
2026-06-21T08:38:15.0573518Z         },
2026-06-21T08:38:15.0573719Z         "unit": {
2026-06-21T08:38:15.0573837Z           "complete": true,
2026-06-21T08:38:15.0573948Z           "evidence": [
2026-06-21T08:38:15.0574053Z             {
2026-06-21T08:38:15.0574209Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T08:38:15.0574320Z               "line": 233
2026-06-21T08:38:15.0574424Z             }
2026-06-21T08:38:15.0574534Z           ]
2026-06-21T08:38:15.0574635Z         }
2026-06-21T08:38:15.0574739Z       }
2026-06-21T08:38:15.0574844Z     },
2026-06-21T08:38:15.0574940Z     {
2026-06-21T08:38:15.0575087Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T08:38:15.0575284Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T08:38:15.0575401Z       "requiredStages": [
2026-06-21T08:38:15.0575517Z         "impl",
2026-06-21T08:38:15.0575613Z         "unit"
2026-06-21T08:38:15.0575725Z       ],
2026-06-21T08:38:15.0575834Z       "stages": {
2026-06-21T08:38:15.0575945Z         "doc": {
2026-06-21T08:38:15.0576082Z           "complete": false,
2026-06-21T08:38:15.0576197Z           "evidence": []
2026-06-21T08:38:15.0576307Z         },
2026-06-21T08:38:15.0576416Z         "impl": {
2026-06-21T08:38:15.0576542Z           "complete": true,
2026-06-21T08:38:15.0576656Z           "evidence": [
2026-06-21T08:38:15.0576750Z             {
2026-06-21T08:38:15.0576894Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.0577003Z               "line": 95
2026-06-21T08:38:15.0577112Z             },
2026-06-21T08:38:15.0577214Z             {
2026-06-21T08:38:15.0577365Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0577481Z               "line": 117
2026-06-21T08:38:15.0577590Z             }
2026-06-21T08:38:15.0577694Z           ]
2026-06-21T08:38:15.0577800Z         },
2026-06-21T08:38:15.0577913Z         "int": {
2026-06-21T08:38:15.0578027Z           "complete": false,
2026-06-21T08:38:15.0578147Z           "evidence": []
2026-06-21T08:38:15.0578250Z         },
2026-06-21T08:38:15.0578363Z         "unit": {
2026-06-21T08:38:15.0578478Z           "complete": true,
2026-06-21T08:38:15.0578592Z           "evidence": [
2026-06-21T08:38:15.0578701Z             {
2026-06-21T08:38:15.0578831Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.0579021Z               "line": 250
2026-06-21T08:38:15.0579122Z             },
2026-06-21T08:38:15.0579222Z             {
2026-06-21T08:38:15.0579384Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0579503Z               "line": 412
2026-06-21T08:38:15.0579608Z             },
2026-06-21T08:38:15.0579703Z             {
2026-06-21T08:38:15.0579846Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0579960Z               "line": 611
2026-06-21T08:38:15.0580067Z             },
2026-06-21T08:38:15.0580175Z             {
2026-06-21T08:38:15.0580314Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0580429Z               "line": 669
2026-06-21T08:38:15.0580532Z             }
2026-06-21T08:38:15.0580639Z           ]
2026-06-21T08:38:15.0580744Z         }
2026-06-21T08:38:15.0580847Z       }
2026-06-21T08:38:15.0580951Z     },
2026-06-21T08:38:15.0581056Z     {
2026-06-21T08:38:15.0581202Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T08:38:15.0583665Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T08:38:15.0584004Z       "requiredStages": [
2026-06-21T08:38:15.0584116Z         "impl",
2026-06-21T08:38:15.0584222Z         "unit",
2026-06-21T08:38:15.0584322Z         "int"
2026-06-21T08:38:15.0584426Z       ],
2026-06-21T08:38:15.0584532Z       "stages": {
2026-06-21T08:38:15.0584641Z         "doc": {
2026-06-21T08:38:15.0584760Z           "complete": false,
2026-06-21T08:38:15.0584880Z           "evidence": []
2026-06-21T08:38:15.0584984Z         },
2026-06-21T08:38:15.0585094Z         "impl": {
2026-06-21T08:38:15.0585215Z           "complete": true,
2026-06-21T08:38:15.0585324Z           "evidence": [
2026-06-21T08:38:15.0585428Z             {
2026-06-21T08:38:15.0585586Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0585714Z               "line": 925
2026-06-21T08:38:15.0585815Z             },
2026-06-21T08:38:15.0585924Z             {
2026-06-21T08:38:15.0586082Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0586197Z               "line": 994
2026-06-21T08:38:15.0586304Z             }
2026-06-21T08:38:15.0586409Z           ]
2026-06-21T08:38:15.0586519Z         },
2026-06-21T08:38:15.0586624Z         "int": {
2026-06-21T08:38:15.0586748Z           "complete": true,
2026-06-21T08:38:15.0586858Z           "evidence": [
2026-06-21T08:38:15.0586957Z             {
2026-06-21T08:38:15.0587106Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T08:38:15.0587221Z               "line": 187
2026-06-21T08:38:15.0587320Z             },
2026-06-21T08:38:15.0587426Z             {
2026-06-21T08:38:15.0587582Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T08:38:15.0587692Z               "line": 348
2026-06-21T08:38:15.0587793Z             }
2026-06-21T08:38:15.0587944Z           ]
2026-06-21T08:38:15.0588046Z         },
2026-06-21T08:38:15.0588178Z         "unit": {
2026-06-21T08:38:15.0588288Z           "complete": true,
2026-06-21T08:38:15.0588399Z           "evidence": [
2026-06-21T08:38:15.0588511Z             {
2026-06-21T08:38:15.0588659Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0588772Z               "line": 1206
2026-06-21T08:38:15.0588862Z             },
2026-06-21T08:38:15.0589048Z             {
2026-06-21T08:38:15.0589181Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0589300Z               "line": 8116
2026-06-21T08:38:15.0589406Z             }
2026-06-21T08:38:15.0589505Z           ]
2026-06-21T08:38:15.0589610Z         }
2026-06-21T08:38:15.0589706Z       }
2026-06-21T08:38:15.0589819Z     },
2026-06-21T08:38:15.0589915Z     {
2026-06-21T08:38:15.0590049Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T08:38:15.0590259Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T08:38:15.0590387Z       "requiredStages": [
2026-06-21T08:38:15.0590507Z         "impl",
2026-06-21T08:38:15.0590613Z         "unit"
2026-06-21T08:38:15.0590721Z       ],
2026-06-21T08:38:15.0590821Z       "stages": {
2026-06-21T08:38:15.0590927Z         "doc": {
2026-06-21T08:38:15.0591045Z           "complete": false,
2026-06-21T08:38:15.0591160Z           "evidence": []
2026-06-21T08:38:15.0591271Z         },
2026-06-21T08:38:15.0591379Z         "impl": {
2026-06-21T08:38:15.0591502Z           "complete": true,
2026-06-21T08:38:15.0591612Z           "evidence": [
2026-06-21T08:38:15.0591714Z             {
2026-06-21T08:38:15.0591867Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0591982Z               "line": 262
2026-06-21T08:38:15.0592086Z             },
2026-06-21T08:38:15.0592191Z             {
2026-06-21T08:38:15.0592335Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0592443Z               "line": 307
2026-06-21T08:38:15.0592683Z             },
2026-06-21T08:38:15.0592782Z             {
2026-06-21T08:38:15.0593026Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0593160Z               "line": 319
2026-06-21T08:38:15.0593264Z             }
2026-06-21T08:38:15.0593369Z           ]
2026-06-21T08:38:15.0593480Z         },
2026-06-21T08:38:15.0593584Z         "int": {
2026-06-21T08:38:15.0593703Z           "complete": false,
2026-06-21T08:38:15.0593814Z           "evidence": []
2026-06-21T08:38:15.0593908Z         },
2026-06-21T08:38:15.0594011Z         "unit": {
2026-06-21T08:38:15.0594141Z           "complete": true,
2026-06-21T08:38:15.0594244Z           "evidence": [
2026-06-21T08:38:15.0594352Z             {
2026-06-21T08:38:15.0594496Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0594606Z               "line": 455
2026-06-21T08:38:15.0594705Z             },
2026-06-21T08:38:15.0594806Z             {
2026-06-21T08:38:15.0594953Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0595078Z               "line": 499
2026-06-21T08:38:15.0595187Z             }
2026-06-21T08:38:15.0595296Z           ]
2026-06-21T08:38:15.0595398Z         }
2026-06-21T08:38:15.0595493Z       }
2026-06-21T08:38:15.0595602Z     },
2026-06-21T08:38:15.0595707Z     {
2026-06-21T08:38:15.0595827Z       "id": "REQ-HOST-RUN-1",
2026-06-21T08:38:15.0598344Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T08:38:15.0598490Z       "requiredStages": [
2026-06-21T08:38:15.0598596Z         "impl",
2026-06-21T08:38:15.0598705Z         "unit",
2026-06-21T08:38:15.0598809Z         "int"
2026-06-21T08:38:15.0598911Z       ],
2026-06-21T08:38:15.0599109Z       "stages": {
2026-06-21T08:38:15.0599219Z         "doc": {
2026-06-21T08:38:15.0599342Z           "complete": false,
2026-06-21T08:38:15.0599455Z           "evidence": []
2026-06-21T08:38:15.0599555Z         },
2026-06-21T08:38:15.0599661Z         "impl": {
2026-06-21T08:38:15.0599769Z           "complete": true,
2026-06-21T08:38:15.0599889Z           "evidence": [
2026-06-21T08:38:15.0599994Z             {
2026-06-21T08:38:15.0600155Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0600271Z               "line": 30
2026-06-21T08:38:15.0600375Z             },
2026-06-21T08:38:15.0600490Z             {
2026-06-21T08:38:15.0600638Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0600761Z               "line": 76
2026-06-21T08:38:15.0600867Z             },
2026-06-21T08:38:15.0600966Z             {
2026-06-21T08:38:15.0601124Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0601239Z               "line": 181
2026-06-21T08:38:15.0601334Z             },
2026-06-21T08:38:15.0601439Z             {
2026-06-21T08:38:15.0601577Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0601691Z               "line": 1266
2026-06-21T08:38:15.0601797Z             }
2026-06-21T08:38:15.0601911Z           ]
2026-06-21T08:38:15.0602015Z         },
2026-06-21T08:38:15.0602124Z         "int": {
2026-06-21T08:38:15.0602242Z           "complete": true,
2026-06-21T08:38:15.0602355Z           "evidence": [
2026-06-21T08:38:15.0602470Z             {
2026-06-21T08:38:15.0602618Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0602843Z               "line": 285
2026-06-21T08:38:15.0602946Z             }
2026-06-21T08:38:15.0603280Z           ]
2026-06-21T08:38:15.0603381Z         },
2026-06-21T08:38:15.0603486Z         "unit": {
2026-06-21T08:38:15.0603610Z           "complete": true,
2026-06-21T08:38:15.0603720Z           "evidence": [
2026-06-21T08:38:15.0603815Z             {
2026-06-21T08:38:15.0603967Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0604083Z               "line": 229
2026-06-21T08:38:15.0604191Z             },
2026-06-21T08:38:15.0604296Z             {
2026-06-21T08:38:15.0604454Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0604562Z               "line": 296
2026-06-21T08:38:15.0604672Z             },
2026-06-21T08:38:15.0604776Z             {
2026-06-21T08:38:15.0604926Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0605032Z               "line": 419
2026-06-21T08:38:15.0605142Z             }
2026-06-21T08:38:15.0605251Z           ]
2026-06-21T08:38:15.0605357Z         }
2026-06-21T08:38:15.0605471Z       }
2026-06-21T08:38:15.0605575Z     },
2026-06-21T08:38:15.0605676Z     {
2026-06-21T08:38:15.0605795Z       "id": "REQ-HOST-RUN-2",
2026-06-21T08:38:15.0607587Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T08:38:15.0607716Z       "requiredStages": [
2026-06-21T08:38:15.0607820Z         "impl",
2026-06-21T08:38:15.0607926Z         "unit",
2026-06-21T08:38:15.0608040Z         "int"
2026-06-21T08:38:15.0608139Z       ],
2026-06-21T08:38:15.0608246Z       "stages": {
2026-06-21T08:38:15.0608346Z         "doc": {
2026-06-21T08:38:15.0608454Z           "complete": false,
2026-06-21T08:38:15.0608565Z           "evidence": []
2026-06-21T08:38:15.0608669Z         },
2026-06-21T08:38:15.0608783Z         "impl": {
2026-06-21T08:38:15.0608885Z           "complete": true,
2026-06-21T08:38:15.0609088Z           "evidence": [
2026-06-21T08:38:15.0609190Z             {
2026-06-21T08:38:15.0609341Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.0609471Z               "line": 182
2026-06-21T08:38:15.0609571Z             },
2026-06-21T08:38:15.0609689Z             {
2026-06-21T08:38:15.0609827Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T08:38:15.0609940Z               "line": 113
2026-06-21T08:38:15.0610048Z             }
2026-06-21T08:38:15.0610154Z           ]
2026-06-21T08:38:15.0610264Z         },
2026-06-21T08:38:15.0610368Z         "int": {
2026-06-21T08:38:15.0610488Z           "complete": true,
2026-06-21T08:38:15.0610593Z           "evidence": [
2026-06-21T08:38:15.0610697Z             {
2026-06-21T08:38:15.0610845Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0610954Z               "line": 572
2026-06-21T08:38:15.0611065Z             }
2026-06-21T08:38:15.0611169Z           ]
2026-06-21T08:38:15.0611269Z         },
2026-06-21T08:38:15.0611369Z         "unit": {
2026-06-21T08:38:15.0611494Z           "complete": true,
2026-06-21T08:38:15.0611607Z           "evidence": [
2026-06-21T08:38:15.0611714Z             {
2026-06-21T08:38:15.0611860Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T08:38:15.0611970Z               "line": 86
2026-06-21T08:38:15.0612086Z             }
2026-06-21T08:38:15.0612184Z           ]
2026-06-21T08:38:15.0612410Z         }
2026-06-21T08:38:15.0612513Z       }
2026-06-21T08:38:15.0612622Z     },
2026-06-21T08:38:15.0612727Z     {
2026-06-21T08:38:15.0612939Z       "id": "REQ-INFRA-1",
2026-06-21T08:38:15.0613140Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T08:38:15.0613258Z       "requiredStages": [],
2026-06-21T08:38:15.0613369Z       "stages": {
2026-06-21T08:38:15.0613469Z         "doc": {
2026-06-21T08:38:15.0613592Z           "complete": false,
2026-06-21T08:38:15.0613703Z           "evidence": []
2026-06-21T08:38:15.0613807Z         },
2026-06-21T08:38:15.0613917Z         "impl": {
2026-06-21T08:38:15.0614022Z           "complete": false,
2026-06-21T08:38:15.0614136Z           "evidence": []
2026-06-21T08:38:15.0614236Z         },
2026-06-21T08:38:15.0614347Z         "int": {
2026-06-21T08:38:15.0614465Z           "complete": false,
2026-06-21T08:38:15.0614576Z           "evidence": []
2026-06-21T08:38:15.0614681Z         },
2026-06-21T08:38:15.0614784Z         "unit": {
2026-06-21T08:38:15.0614910Z           "complete": false,
2026-06-21T08:38:15.0615024Z           "evidence": []
2026-06-21T08:38:15.0615132Z         }
2026-06-21T08:38:15.0615241Z       }
2026-06-21T08:38:15.0615345Z     },
2026-06-21T08:38:15.0615449Z     {
2026-06-21T08:38:15.0615559Z       "id": "REQ-INST-1",
2026-06-21T08:38:15.0615750Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T08:38:15.0615868Z       "requiredStages": [],
2026-06-21T08:38:15.0615979Z       "stages": {
2026-06-21T08:38:15.0616088Z         "doc": {
2026-06-21T08:38:15.0616198Z           "complete": false,
2026-06-21T08:38:15.0616317Z           "evidence": []
2026-06-21T08:38:15.0616422Z         },
2026-06-21T08:38:15.0616528Z         "impl": {
2026-06-21T08:38:15.0616641Z           "complete": false,
2026-06-21T08:38:15.0616755Z           "evidence": []
2026-06-21T08:38:15.0616857Z         },
2026-06-21T08:38:15.0616956Z         "int": {
2026-06-21T08:38:15.0617075Z           "complete": false,
2026-06-21T08:38:15.0617186Z           "evidence": []
2026-06-21T08:38:15.0617294Z         },
2026-06-21T08:38:15.0617408Z         "unit": {
2026-06-21T08:38:15.0617515Z           "complete": false,
2026-06-21T08:38:15.0617623Z           "evidence": []
2026-06-21T08:38:15.0617728Z         }
2026-06-21T08:38:15.0617839Z       }
2026-06-21T08:38:15.0617942Z     },
2026-06-21T08:38:15.0618041Z     {
2026-06-21T08:38:15.0618161Z       "id": "REQ-INST-10",
2026-06-21T08:38:15.0618399Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T08:38:15.0618529Z       "requiredStages": [
2026-06-21T08:38:15.0618633Z         "impl",
2026-06-21T08:38:15.0618738Z         "unit"
2026-06-21T08:38:15.0618839Z       ],
2026-06-21T08:38:15.0619019Z       "stages": {
2026-06-21T08:38:15.0619120Z         "doc": {
2026-06-21T08:38:15.0619239Z           "complete": false,
2026-06-21T08:38:15.0619353Z           "evidence": []
2026-06-21T08:38:15.0619473Z         },
2026-06-21T08:38:15.0619583Z         "impl": {
2026-06-21T08:38:15.0619687Z           "complete": true,
2026-06-21T08:38:15.0619802Z           "evidence": [
2026-06-21T08:38:15.0619911Z             {
2026-06-21T08:38:15.0620070Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0620178Z               "line": 648
2026-06-21T08:38:15.0620273Z             },
2026-06-21T08:38:15.0620382Z             {
2026-06-21T08:38:15.0620532Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0620646Z               "line": 725
2026-06-21T08:38:15.0620752Z             },
2026-06-21T08:38:15.0620861Z             {
2026-06-21T08:38:15.0621010Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T08:38:15.0621119Z               "line": 13
2026-06-21T08:38:15.0621223Z             },
2026-06-21T08:38:15.0621324Z             {
2026-06-21T08:38:15.0621472Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T08:38:15.0621576Z               "line": 67
2026-06-21T08:38:15.0621792Z             },
2026-06-21T08:38:15.0621901Z             {
2026-06-21T08:38:15.0622035Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.0622259Z               "line": 18
2026-06-21T08:38:15.0622364Z             },
2026-06-21T08:38:15.0622469Z             {
2026-06-21T08:38:15.0622612Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.0622730Z               "line": 444
2026-06-21T08:38:15.0622840Z             }
2026-06-21T08:38:15.0622942Z           ]
2026-06-21T08:38:15.0623050Z         },
2026-06-21T08:38:15.0623149Z         "int": {
2026-06-21T08:38:15.0623268Z           "complete": false,
2026-06-21T08:38:15.0623376Z           "evidence": []
2026-06-21T08:38:15.0623485Z         },
2026-06-21T08:38:15.0623595Z         "unit": {
2026-06-21T08:38:15.0623710Z           "complete": true,
2026-06-21T08:38:15.0623823Z           "evidence": [
2026-06-21T08:38:15.0623920Z             {
2026-06-21T08:38:15.0624066Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0624182Z               "line": 932
2026-06-21T08:38:15.0624296Z             },
2026-06-21T08:38:15.0624410Z             {
2026-06-21T08:38:15.0624554Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0624673Z               "line": 1309
2026-06-21T08:38:15.0624768Z             },
2026-06-21T08:38:15.0624884Z             {
2026-06-21T08:38:15.0625030Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0625141Z               "line": 1320
2026-06-21T08:38:15.0625245Z             },
2026-06-21T08:38:15.0625340Z             {
2026-06-21T08:38:15.0625479Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0625588Z               "line": 1336
2026-06-21T08:38:15.0625692Z             },
2026-06-21T08:38:15.0625796Z             {
2026-06-21T08:38:15.0625943Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0626056Z               "line": 1352
2026-06-21T08:38:15.0626167Z             },
2026-06-21T08:38:15.0626267Z             {
2026-06-21T08:38:15.0626410Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0626534Z               "line": 1374
2026-06-21T08:38:15.0626633Z             },
2026-06-21T08:38:15.0626744Z             {
2026-06-21T08:38:15.0626896Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0627005Z               "line": 1679
2026-06-21T08:38:15.0627117Z             },
2026-06-21T08:38:15.0627220Z             {
2026-06-21T08:38:15.0627354Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T08:38:15.0627455Z               "line": 130
2026-06-21T08:38:15.0627564Z             },
2026-06-21T08:38:15.0627673Z             {
2026-06-21T08:38:15.0627807Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T08:38:15.0627921Z               "line": 167
2026-06-21T08:38:15.0628022Z             },
2026-06-21T08:38:15.0628127Z             {
2026-06-21T08:38:15.0628255Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T08:38:15.0628366Z               "line": 175
2026-06-21T08:38:15.0628479Z             },
2026-06-21T08:38:15.0628592Z             {
2026-06-21T08:38:15.0628726Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T08:38:15.0628841Z               "line": 183
2026-06-21T08:38:15.0629027Z             },
2026-06-21T08:38:15.0629132Z             {
2026-06-21T08:38:15.0629264Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.0629385Z               "line": 896
2026-06-21T08:38:15.0629485Z             }
2026-06-21T08:38:15.0629594Z           ]
2026-06-21T08:38:15.0629699Z         }
2026-06-21T08:38:15.0629809Z       }
2026-06-21T08:38:15.0629913Z     },
2026-06-21T08:38:15.0630014Z     {
2026-06-21T08:38:15.0630128Z       "id": "REQ-INST-11",
2026-06-21T08:38:15.0630367Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T08:38:15.0630476Z       "requiredStages": [
2026-06-21T08:38:15.0630682Z         "impl",
2026-06-21T08:38:15.0630790Z         "unit"
2026-06-21T08:38:15.0630899Z       ],
2026-06-21T08:38:15.0631093Z       "stages": {
2026-06-21T08:38:15.0631202Z         "doc": {
2026-06-21T08:38:15.0631308Z           "complete": false,
2026-06-21T08:38:15.0631417Z           "evidence": []
2026-06-21T08:38:15.0631521Z         },
2026-06-21T08:38:15.0631637Z         "impl": {
2026-06-21T08:38:15.0631755Z           "complete": true,
2026-06-21T08:38:15.0631860Z           "evidence": [
2026-06-21T08:38:15.0631971Z             {
2026-06-21T08:38:15.0632117Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0632228Z               "line": 514
2026-06-21T08:38:15.0632327Z             },
2026-06-21T08:38:15.0632432Z             {
2026-06-21T08:38:15.0632595Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0632704Z               "line": 297
2026-06-21T08:38:15.0632809Z             },
2026-06-21T08:38:15.0632915Z             {
2026-06-21T08:38:15.0633066Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T08:38:15.0633173Z               "line": 59
2026-06-21T08:38:15.0633281Z             },
2026-06-21T08:38:15.0633381Z             {
2026-06-21T08:38:15.0633511Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0633624Z               "line": 5291
2026-06-21T08:38:15.0633728Z             },
2026-06-21T08:38:15.0633828Z             {
2026-06-21T08:38:15.0633955Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0637442Z               "line": 7137
2026-06-21T08:38:15.0637584Z             }
2026-06-21T08:38:15.0637691Z           ]
2026-06-21T08:38:15.0637800Z         },
2026-06-21T08:38:15.0637904Z         "int": {
2026-06-21T08:38:15.0638029Z           "complete": false,
2026-06-21T08:38:15.0638138Z           "evidence": []
2026-06-21T08:38:15.0638243Z         },
2026-06-21T08:38:15.0638362Z         "unit": {
2026-06-21T08:38:15.0638467Z           "complete": true,
2026-06-21T08:38:15.0638592Z           "evidence": [
2026-06-21T08:38:15.0638696Z             {
2026-06-21T08:38:15.0638858Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0639034Z               "line": 1479
2026-06-21T08:38:15.0639138Z             },
2026-06-21T08:38:15.0639253Z             {
2026-06-21T08:38:15.0639405Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0639520Z               "line": 1512
2026-06-21T08:38:15.0639611Z             },
2026-06-21T08:38:15.0639720Z             {
2026-06-21T08:38:15.0639878Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0639983Z               "line": 527
2026-06-21T08:38:15.0640092Z             },
2026-06-21T08:38:15.0640183Z             {
2026-06-21T08:38:15.0640326Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T08:38:15.0640440Z               "line": 160
2026-06-21T08:38:15.0640541Z             },
2026-06-21T08:38:15.0640645Z             {
2026-06-21T08:38:15.0640798Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T08:38:15.0640922Z               "line": 190
2026-06-21T08:38:15.0641031Z             },
2026-06-21T08:38:15.0641142Z             {
2026-06-21T08:38:15.0641284Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T08:38:15.0641393Z               "line": 225
2026-06-21T08:38:15.0641498Z             },
2026-06-21T08:38:15.0641606Z             {
2026-06-21T08:38:15.0641738Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0641848Z               "line": 7994
2026-06-21T08:38:15.0641953Z             }
2026-06-21T08:38:15.0642057Z           ]
2026-06-21T08:38:15.0642163Z         }
2026-06-21T08:38:15.0642268Z       }
2026-06-21T08:38:15.0642367Z     },
2026-06-21T08:38:15.0642478Z     {
2026-06-21T08:38:15.0642588Z       "id": "REQ-INST-12",
2026-06-21T08:38:15.0642912Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T08:38:15.0643031Z       "requiredStages": [
2026-06-21T08:38:15.0643279Z         "impl",
2026-06-21T08:38:15.0643374Z         "unit"
2026-06-21T08:38:15.0643579Z       ],
2026-06-21T08:38:15.0643689Z       "stages": {
2026-06-21T08:38:15.0643790Z         "doc": {
2026-06-21T08:38:15.0643908Z           "complete": false,
2026-06-21T08:38:15.0644023Z           "evidence": []
2026-06-21T08:38:15.0644128Z         },
2026-06-21T08:38:15.0644236Z         "impl": {
2026-06-21T08:38:15.0644355Z           "complete": true,
2026-06-21T08:38:15.0644464Z           "evidence": [
2026-06-21T08:38:15.0644567Z             {
2026-06-21T08:38:15.0644720Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0644821Z               "line": 566
2026-06-21T08:38:15.0644929Z             },
2026-06-21T08:38:15.0645031Z             {
2026-06-21T08:38:15.0645187Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0645302Z               "line": 659
2026-06-21T08:38:15.0645403Z             },
2026-06-21T08:38:15.0645516Z             {
2026-06-21T08:38:15.0645660Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0645764Z               "line": 739
2026-06-21T08:38:15.0645869Z             },
2026-06-21T08:38:15.0645970Z             {
2026-06-21T08:38:15.0646102Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0646208Z               "line": 96
2026-06-21T08:38:15.0646318Z             },
2026-06-21T08:38:15.0646417Z             {
2026-06-21T08:38:15.0646561Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0646681Z               "line": 269
2026-06-21T08:38:15.0646784Z             },
2026-06-21T08:38:15.0646893Z             {
2026-06-21T08:38:15.0647031Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0647139Z               "line": 148
2026-06-21T08:38:15.0647239Z             }
2026-06-21T08:38:15.0647335Z           ]
2026-06-21T08:38:15.0647439Z         },
2026-06-21T08:38:15.0647544Z         "int": {
2026-06-21T08:38:15.0647673Z           "complete": false,
2026-06-21T08:38:15.0647787Z           "evidence": []
2026-06-21T08:38:15.0647898Z         },
2026-06-21T08:38:15.0648002Z         "unit": {
2026-06-21T08:38:15.0648121Z           "complete": true,
2026-06-21T08:38:15.0648222Z           "evidence": [
2026-06-21T08:38:15.0648321Z             {
2026-06-21T08:38:15.0648464Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0648571Z               "line": 1554
2026-06-21T08:38:15.0648675Z             },
2026-06-21T08:38:15.0648779Z             {
2026-06-21T08:38:15.0648928Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0649108Z               "line": 1577
2026-06-21T08:38:15.0649205Z             },
2026-06-21T08:38:15.0649313Z             {
2026-06-21T08:38:15.0649463Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0649576Z               "line": 1614
2026-06-21T08:38:15.0649684Z             },
2026-06-21T08:38:15.0649789Z             {
2026-06-21T08:38:15.0649928Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.0650037Z               "line": 457
2026-06-21T08:38:15.0650147Z             },
2026-06-21T08:38:15.0650248Z             {
2026-06-21T08:38:15.0650399Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0650495Z               "line": 185
2026-06-21T08:38:15.0650605Z             },
2026-06-21T08:38:15.0650704Z             {
2026-06-21T08:38:15.0650848Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0650957Z               "line": 206
2026-06-21T08:38:15.0651063Z             },
2026-06-21T08:38:15.0651168Z             {
2026-06-21T08:38:15.0651310Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0651416Z               "line": 232
2026-06-21T08:38:15.0651520Z             }
2026-06-21T08:38:15.0651620Z           ]
2026-06-21T08:38:15.0651726Z         }
2026-06-21T08:38:15.0651826Z       }
2026-06-21T08:38:15.0652029Z     },
2026-06-21T08:38:15.0652138Z     {
2026-06-21T08:38:15.0652242Z       "id": "REQ-INST-13",
2026-06-21T08:38:15.0652552Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T08:38:15.0652661Z       "requiredStages": [
2026-06-21T08:38:15.0652772Z         "impl",
2026-06-21T08:38:15.0652871Z         "unit"
2026-06-21T08:38:15.0652976Z       ],
2026-06-21T08:38:15.0653081Z       "stages": {
2026-06-21T08:38:15.0653185Z         "doc": {
2026-06-21T08:38:15.0653310Z           "complete": false,
2026-06-21T08:38:15.0653429Z           "evidence": []
2026-06-21T08:38:15.0653533Z         },
2026-06-21T08:38:15.0653639Z         "impl": {
2026-06-21T08:38:15.0653748Z           "complete": true,
2026-06-21T08:38:15.0653858Z           "evidence": [
2026-06-21T08:38:15.0653969Z             {
2026-06-21T08:38:15.0654115Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0654225Z               "line": 100
2026-06-21T08:38:15.0654335Z             },
2026-06-21T08:38:15.0654435Z             {
2026-06-21T08:38:15.0654588Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0654702Z               "line": 171
2026-06-21T08:38:15.0654810Z             }
2026-06-21T08:38:15.0654920Z           ]
2026-06-21T08:38:15.0655019Z         },
2026-06-21T08:38:15.0655123Z         "int": {
2026-06-21T08:38:15.0655233Z           "complete": false,
2026-06-21T08:38:15.0655343Z           "evidence": []
2026-06-21T08:38:15.0655447Z         },
2026-06-21T08:38:15.0655542Z         "unit": {
2026-06-21T08:38:15.0655662Z           "complete": true,
2026-06-21T08:38:15.0655771Z           "evidence": [
2026-06-21T08:38:15.0655882Z             {
2026-06-21T08:38:15.0656030Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0656148Z               "line": 261
2026-06-21T08:38:15.0656254Z             },
2026-06-21T08:38:15.0656368Z             {
2026-06-21T08:38:15.0656511Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T08:38:15.0656616Z               "line": 279
2026-06-21T08:38:15.0656720Z             }
2026-06-21T08:38:15.0656826Z           ]
2026-06-21T08:38:15.0656931Z         }
2026-06-21T08:38:15.0657030Z       }
2026-06-21T08:38:15.0657136Z     },
2026-06-21T08:38:15.0657241Z     {
2026-06-21T08:38:15.0657344Z       "id": "REQ-INST-14",
2026-06-21T08:38:15.0657760Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T08:38:15.0657862Z       "requiredStages": [
2026-06-21T08:38:15.0657971Z         "doc",
2026-06-21T08:38:15.0658080Z         "impl",
2026-06-21T08:38:15.0658182Z         "unit"
2026-06-21T08:38:15.0658286Z       ],
2026-06-21T08:38:15.0658390Z       "stages": {
2026-06-21T08:38:15.0658496Z         "doc": {
2026-06-21T08:38:15.0658596Z           "complete": true,
2026-06-21T08:38:15.0658705Z           "evidence": [
2026-06-21T08:38:15.0658806Z             {
2026-06-21T08:38:15.0658925Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0659131Z               "line": 588
2026-06-21T08:38:15.0659230Z             },
2026-06-21T08:38:15.0659344Z             {
2026-06-21T08:38:15.0659469Z               "path": "docs/STORAGE.md",
2026-06-21T08:38:15.0659578Z               "line": 49
2026-06-21T08:38:15.0659683Z             }
2026-06-21T08:38:15.0659789Z           ]
2026-06-21T08:38:15.0659897Z         },
2026-06-21T08:38:15.0659998Z         "impl": {
2026-06-21T08:38:15.0660118Z           "complete": true,
2026-06-21T08:38:15.0660235Z           "evidence": [
2026-06-21T08:38:15.0660340Z             {
2026-06-21T08:38:15.0660498Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0660602Z               "line": 410
2026-06-21T08:38:15.0660707Z             },
2026-06-21T08:38:15.0660808Z             {
2026-06-21T08:38:15.0660959Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0661065Z               "line": 367
2026-06-21T08:38:15.0661279Z             },
2026-06-21T08:38:15.0661389Z             {
2026-06-21T08:38:15.0661517Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0661737Z               "line": 293
2026-06-21T08:38:15.0661841Z             },
2026-06-21T08:38:15.0661947Z             {
2026-06-21T08:38:15.0662075Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0662180Z               "line": 1577
2026-06-21T08:38:15.0662286Z             }
2026-06-21T08:38:15.0662390Z           ]
2026-06-21T08:38:15.0662499Z         },
2026-06-21T08:38:15.0662598Z         "int": {
2026-06-21T08:38:15.0662721Z           "complete": false,
2026-06-21T08:38:15.0662830Z           "evidence": []
2026-06-21T08:38:15.0662940Z         },
2026-06-21T08:38:15.0663036Z         "unit": {
2026-06-21T08:38:15.0663149Z           "complete": true,
2026-06-21T08:38:15.0663264Z           "evidence": [
2026-06-21T08:38:15.0663365Z             {
2026-06-21T08:38:15.0663526Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0663637Z               "line": 1163
2026-06-21T08:38:15.0663750Z             },
2026-06-21T08:38:15.0663865Z             {
2026-06-21T08:38:15.0664004Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0664117Z               "line": 944
2026-06-21T08:38:15.0664228Z             },
2026-06-21T08:38:15.0664337Z             {
2026-06-21T08:38:15.0664480Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0664595Z               "line": 1205
2026-06-21T08:38:15.0664704Z             },
2026-06-21T08:38:15.0664800Z             {
2026-06-21T08:38:15.0664938Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0665052Z               "line": 659
2026-06-21T08:38:15.0665158Z             },
2026-06-21T08:38:15.0665262Z             {
2026-06-21T08:38:15.0665403Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0665514Z               "line": 8070
2026-06-21T08:38:15.0665617Z             }
2026-06-21T08:38:15.0665725Z           ]
2026-06-21T08:38:15.0665827Z         }
2026-06-21T08:38:15.0665932Z       }
2026-06-21T08:38:15.0666035Z     },
2026-06-21T08:38:15.0666142Z     {
2026-06-21T08:38:15.0666265Z       "id": "REQ-INST-15",
2026-06-21T08:38:15.0667013Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T08:38:15.0667138Z       "requiredStages": [
2026-06-21T08:38:15.0667242Z         "doc",
2026-06-21T08:38:15.0667352Z         "impl",
2026-06-21T08:38:15.0667453Z         "unit"
2026-06-21T08:38:15.0667552Z       ],
2026-06-21T08:38:15.0667657Z       "stages": {
2026-06-21T08:38:15.0667763Z         "doc": {
2026-06-21T08:38:15.0667881Z           "complete": true,
2026-06-21T08:38:15.0667990Z           "evidence": [
2026-06-21T08:38:15.0668099Z             {
2026-06-21T08:38:15.0668297Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T08:38:15.0668412Z               "line": 3
2026-06-21T08:38:15.0668517Z             }
2026-06-21T08:38:15.0668621Z           ]
2026-06-21T08:38:15.0668727Z         },
2026-06-21T08:38:15.0668832Z         "impl": {
2026-06-21T08:38:15.0669013Z           "complete": true,
2026-06-21T08:38:15.0669122Z           "evidence": [
2026-06-21T08:38:15.0669222Z             {
2026-06-21T08:38:15.0669404Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0669513Z               "line": 353
2026-06-21T08:38:15.0669618Z             },
2026-06-21T08:38:15.0669724Z             {
2026-06-21T08:38:15.0669866Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.0669977Z               "line": 60
2026-06-21T08:38:15.0670071Z             },
2026-06-21T08:38:15.0670180Z             {
2026-06-21T08:38:15.0670330Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0670558Z               "line": 368
2026-06-21T08:38:15.0670664Z             },
2026-06-21T08:38:15.0670847Z             {
2026-06-21T08:38:15.0671000Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0671114Z               "line": 417
2026-06-21T08:38:15.0671219Z             },
2026-06-21T08:38:15.0671329Z             {
2026-06-21T08:38:15.0671457Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0671558Z               "line": 19
2026-06-21T08:38:15.0671663Z             },
2026-06-21T08:38:15.0671772Z             {
2026-06-21T08:38:15.0671897Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0672006Z               "line": 70
2026-06-21T08:38:15.0672110Z             },
2026-06-21T08:38:15.0672212Z             {
2026-06-21T08:38:15.0672344Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0672454Z               "line": 96
2026-06-21T08:38:15.0672560Z             },
2026-06-21T08:38:15.0672663Z             {
2026-06-21T08:38:15.0672802Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0672904Z               "line": 121
2026-06-21T08:38:15.0673012Z             },
2026-06-21T08:38:15.0673111Z             {
2026-06-21T08:38:15.0673240Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0673347Z               "line": 172
2026-06-21T08:38:15.0673447Z             },
2026-06-21T08:38:15.0673553Z             {
2026-06-21T08:38:15.0673695Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0673800Z               "line": 178
2026-06-21T08:38:15.0673901Z             },
2026-06-21T08:38:15.0674010Z             {
2026-06-21T08:38:15.0674150Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0674263Z               "line": 1469
2026-06-21T08:38:15.0674372Z             }
2026-06-21T08:38:15.0674469Z           ]
2026-06-21T08:38:15.0674578Z         },
2026-06-21T08:38:15.0674682Z         "int": {
2026-06-21T08:38:15.0674808Z           "complete": false,
2026-06-21T08:38:15.0674921Z           "evidence": []
2026-06-21T08:38:15.0675025Z         },
2026-06-21T08:38:15.0675132Z         "unit": {
2026-06-21T08:38:15.0675245Z           "complete": true,
2026-06-21T08:38:15.0675360Z           "evidence": [
2026-06-21T08:38:15.0675465Z             {
2026-06-21T08:38:15.0675622Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0675733Z               "line": 577
2026-06-21T08:38:15.0675836Z             },
2026-06-21T08:38:15.0675949Z             {
2026-06-21T08:38:15.0676102Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.0676219Z               "line": 638
2026-06-21T08:38:15.0676324Z             },
2026-06-21T08:38:15.0676425Z             {
2026-06-21T08:38:15.0676567Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0676682Z               "line": 213
2026-06-21T08:38:15.0676792Z             },
2026-06-21T08:38:15.0676896Z             {
2026-06-21T08:38:15.0677049Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0677182Z               "line": 249
2026-06-21T08:38:15.0677283Z             },
2026-06-21T08:38:15.0677393Z             {
2026-06-21T08:38:15.0677535Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0677646Z               "line": 262
2026-06-21T08:38:15.0677750Z             },
2026-06-21T08:38:15.0677860Z             {
2026-06-21T08:38:15.0677990Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T08:38:15.0678098Z               "line": 338
2026-06-21T08:38:15.0678203Z             },
2026-06-21T08:38:15.0678300Z             {
2026-06-21T08:38:15.0678441Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.0678550Z               "line": 690
2026-06-21T08:38:15.0678654Z             },
2026-06-21T08:38:15.0678758Z             {
2026-06-21T08:38:15.0678886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0679176Z               "line": 8007
2026-06-21T08:38:15.0679287Z             },
2026-06-21T08:38:15.0679411Z             {
2026-06-21T08:38:15.0679635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0679745Z               "line": 9837
2026-06-21T08:38:15.0679854Z             }
2026-06-21T08:38:15.0679959Z           ]
2026-06-21T08:38:15.0680064Z         }
2026-06-21T08:38:15.0680164Z       }
2026-06-21T08:38:15.0680270Z     },
2026-06-21T08:38:15.0680369Z     {
2026-06-21T08:38:15.0680493Z       "id": "REQ-INST-2",
2026-06-21T08:38:15.0680641Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T08:38:15.0680746Z       "requiredStages": [
2026-06-21T08:38:15.0680852Z         "impl",
2026-06-21T08:38:15.0680956Z         "unit"
2026-06-21T08:38:15.0681061Z       ],
2026-06-21T08:38:15.0681167Z       "stages": {
2026-06-21T08:38:15.0681266Z         "doc": {
2026-06-21T08:38:15.0681393Z           "complete": false,
2026-06-21T08:38:15.0681498Z           "evidence": []
2026-06-21T08:38:15.0681618Z         },
2026-06-21T08:38:15.0681727Z         "impl": {
2026-06-21T08:38:15.0681847Z           "complete": true,
2026-06-21T08:38:15.0681961Z           "evidence": [
2026-06-21T08:38:15.0682070Z             {
2026-06-21T08:38:15.0682228Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0682346Z               "line": 108
2026-06-21T08:38:15.0682448Z             },
2026-06-21T08:38:15.0682543Z             {
2026-06-21T08:38:15.0682695Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:15.0682801Z               "line": 28
2026-06-21T08:38:15.0682904Z             },
2026-06-21T08:38:15.0683014Z             {
2026-06-21T08:38:15.0683149Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:15.0683267Z               "line": 74
2026-06-21T08:38:15.0683367Z             },
2026-06-21T08:38:15.0683478Z             {
2026-06-21T08:38:15.0683614Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:15.0683728Z               "line": 96
2026-06-21T08:38:15.0683837Z             },
2026-06-21T08:38:15.0683936Z             {
2026-06-21T08:38:15.0684070Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:15.0684180Z               "line": 86
2026-06-21T08:38:15.0684289Z             },
2026-06-21T08:38:15.0684394Z             {
2026-06-21T08:38:15.0684541Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T08:38:15.0684661Z               "line": 118
2026-06-21T08:38:15.0684761Z             }
2026-06-21T08:38:15.0684870Z           ]
2026-06-21T08:38:15.0684966Z         },
2026-06-21T08:38:15.0685076Z         "int": {
2026-06-21T08:38:15.0685185Z           "complete": false,
2026-06-21T08:38:15.0685300Z           "evidence": []
2026-06-21T08:38:15.0685405Z         },
2026-06-21T08:38:15.0685509Z         "unit": {
2026-06-21T08:38:15.0685634Z           "complete": true,
2026-06-21T08:38:15.0685734Z           "evidence": [
2026-06-21T08:38:15.0685834Z             {
2026-06-21T08:38:15.0685978Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T08:38:15.0686091Z               "line": 250
2026-06-21T08:38:15.0686206Z             },
2026-06-21T08:38:15.0686307Z             {
2026-06-21T08:38:15.0686448Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:15.0686562Z               "line": 280
2026-06-21T08:38:15.0686681Z             }
2026-06-21T08:38:15.0686784Z           ]
2026-06-21T08:38:15.0686899Z         }
2026-06-21T08:38:15.0687004Z       }
2026-06-21T08:38:15.0687113Z     },
2026-06-21T08:38:15.0687218Z     {
2026-06-21T08:38:15.0687319Z       "id": "REQ-INST-3",
2026-06-21T08:38:15.0687503Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T08:38:15.0687605Z       "requiredStages": [
2026-06-21T08:38:15.0687714Z         "doc",
2026-06-21T08:38:15.0687818Z         "impl",
2026-06-21T08:38:15.0687925Z         "unit"
2026-06-21T08:38:15.0688034Z       ],
2026-06-21T08:38:15.0688143Z       "stages": {
2026-06-21T08:38:15.0688249Z         "doc": {
2026-06-21T08:38:15.0688462Z           "complete": true,
2026-06-21T08:38:15.0688573Z           "evidence": [
2026-06-21T08:38:15.0688754Z             {
2026-06-21T08:38:15.0688888Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T08:38:15.0689067Z               "line": 3
2026-06-21T08:38:15.0689162Z             }
2026-06-21T08:38:15.0689266Z           ]
2026-06-21T08:38:15.0689365Z         },
2026-06-21T08:38:15.0689484Z         "impl": {
2026-06-21T08:38:15.0689590Z           "complete": true,
2026-06-21T08:38:15.0689699Z           "evidence": [
2026-06-21T08:38:15.0689804Z             {
2026-06-21T08:38:15.0689943Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0690061Z               "line": 59
2026-06-21T08:38:15.0690167Z             },
2026-06-21T08:38:15.0690262Z             {
2026-06-21T08:38:15.0690419Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.0690534Z               "line": 480
2026-06-21T08:38:15.0690634Z             },
2026-06-21T08:38:15.0690739Z             {
2026-06-21T08:38:15.0690896Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0691015Z               "line": 254
2026-06-21T08:38:15.0691121Z             },
2026-06-21T08:38:15.0691225Z             {
2026-06-21T08:38:15.0691369Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0691474Z               "line": 384
2026-06-21T08:38:15.0691568Z             },
2026-06-21T08:38:15.0691679Z             {
2026-06-21T08:38:15.0691826Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0691944Z               "line": 418
2026-06-21T08:38:15.0692049Z             },
2026-06-21T08:38:15.0692145Z             {
2026-06-21T08:38:15.0692291Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T08:38:15.0692402Z               "line": 74
2026-06-21T08:38:15.0692507Z             },
2026-06-21T08:38:15.0692611Z             {
2026-06-21T08:38:15.0692765Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0692878Z               "line": 234
2026-06-21T08:38:15.0692988Z             },
2026-06-21T08:38:15.0693098Z             {
2026-06-21T08:38:15.0693250Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0693361Z               "line": 396
2026-06-21T08:38:15.0693469Z             },
2026-06-21T08:38:15.0693569Z             {
2026-06-21T08:38:15.0693723Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0693832Z               "line": 45
2026-06-21T08:38:15.0693937Z             },
2026-06-21T08:38:15.0694043Z             {
2026-06-21T08:38:15.0694194Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0694298Z               "line": 114
2026-06-21T08:38:15.0694402Z             },
2026-06-21T08:38:15.0694506Z             {
2026-06-21T08:38:15.0694649Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0694759Z               "line": 152
2026-06-21T08:38:15.0694858Z             },
2026-06-21T08:38:15.0694964Z             {
2026-06-21T08:38:15.0695116Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0695221Z               "line": 168
2026-06-21T08:38:15.0695331Z             },
2026-06-21T08:38:15.0695435Z             {
2026-06-21T08:38:15.0695579Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0695679Z               "line": 178
2026-06-21T08:38:15.0695788Z             },
2026-06-21T08:38:15.0695894Z             {
2026-06-21T08:38:15.0696042Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0696160Z               "line": 210
2026-06-21T08:38:15.0696267Z             },
2026-06-21T08:38:15.0696380Z             {
2026-06-21T08:38:15.0696524Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0696646Z               "line": 287
2026-06-21T08:38:15.0696747Z             },
2026-06-21T08:38:15.0696839Z             {
2026-06-21T08:38:15.0697117Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0697228Z               "line": 311
2026-06-21T08:38:15.0697415Z             },
2026-06-21T08:38:15.0697516Z             {
2026-06-21T08:38:15.0697664Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0697768Z               "line": 389
2026-06-21T08:38:15.0697869Z             },
2026-06-21T08:38:15.0697978Z             {
2026-06-21T08:38:15.0698112Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0698222Z               "line": 438
2026-06-21T08:38:15.0698326Z             },
2026-06-21T08:38:15.0698427Z             {
2026-06-21T08:38:15.0698574Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T08:38:15.0698684Z               "line": 37
2026-06-21T08:38:15.0698781Z             },
2026-06-21T08:38:15.0698879Z             {
2026-06-21T08:38:15.0699095Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0699208Z               "line": 62
2026-06-21T08:38:15.0699323Z             },
2026-06-21T08:38:15.0699449Z             {
2026-06-21T08:38:15.0699585Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0699699Z               "line": 279
2026-06-21T08:38:15.0699794Z             },
2026-06-21T08:38:15.0699897Z             {
2026-06-21T08:38:15.0700035Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0700146Z               "line": 1848
2026-06-21T08:38:15.0700254Z             }
2026-06-21T08:38:15.0700359Z           ]
2026-06-21T08:38:15.0700465Z         },
2026-06-21T08:38:15.0700569Z         "int": {
2026-06-21T08:38:15.0700674Z           "complete": false,
2026-06-21T08:38:15.0700784Z           "evidence": []
2026-06-21T08:38:15.0700883Z         },
2026-06-21T08:38:15.0700989Z         "unit": {
2026-06-21T08:38:15.0701099Z           "complete": true,
2026-06-21T08:38:15.0701212Z           "evidence": [
2026-06-21T08:38:15.0701308Z             {
2026-06-21T08:38:15.0701451Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:15.0701575Z               "line": 360
2026-06-21T08:38:15.0701677Z             },
2026-06-21T08:38:15.0701794Z             {
2026-06-21T08:38:15.0701934Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0702048Z               "line": 837
2026-06-21T08:38:15.0702152Z             },
2026-06-21T08:38:15.0702268Z             {
2026-06-21T08:38:15.0702409Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0702513Z               "line": 894
2026-06-21T08:38:15.0702624Z             },
2026-06-21T08:38:15.0702724Z             {
2026-06-21T08:38:15.0702876Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0702982Z               "line": 889
2026-06-21T08:38:15.0703091Z             },
2026-06-21T08:38:15.0703200Z             {
2026-06-21T08:38:15.0703344Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.0703462Z               "line": 1014
2026-06-21T08:38:15.0703573Z             },
2026-06-21T08:38:15.0703682Z             {
2026-06-21T08:38:15.0703834Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0703959Z               "line": 1264
2026-06-21T08:38:15.0704068Z             },
2026-06-21T08:38:15.0704173Z             {
2026-06-21T08:38:15.0704330Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0704439Z               "line": 1405
2026-06-21T08:38:15.0704546Z             },
2026-06-21T08:38:15.0704649Z             {
2026-06-21T08:38:15.0704791Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0704906Z               "line": 449
2026-06-21T08:38:15.0705009Z             },
2026-06-21T08:38:15.0705118Z             {
2026-06-21T08:38:15.0705262Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0705380Z               "line": 485
2026-06-21T08:38:15.0705486Z             },
2026-06-21T08:38:15.0705577Z             {
2026-06-21T08:38:15.0705834Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0705939Z               "line": 540
2026-06-21T08:38:15.0706139Z             },
2026-06-21T08:38:15.0706244Z             {
2026-06-21T08:38:15.0706387Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0706497Z               "line": 697
2026-06-21T08:38:15.0706602Z             },
2026-06-21T08:38:15.0706711Z             {
2026-06-21T08:38:15.0706855Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0706968Z               "line": 931
2026-06-21T08:38:15.0707075Z             },
2026-06-21T08:38:15.0707179Z             {
2026-06-21T08:38:15.0707326Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0707437Z               "line": 945
2026-06-21T08:38:15.0707545Z             },
2026-06-21T08:38:15.0707644Z             {
2026-06-21T08:38:15.0707797Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0707904Z               "line": 1290
2026-06-21T08:38:15.0708009Z             },
2026-06-21T08:38:15.0708119Z             {
2026-06-21T08:38:15.0708257Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.0708363Z               "line": 609
2026-06-21T08:38:15.0708467Z             },
2026-06-21T08:38:15.0708576Z             {
2026-06-21T08:38:15.0708702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0708816Z               "line": 8031
2026-06-21T08:38:15.0708920Z             }
2026-06-21T08:38:15.0709101Z           ]
2026-06-21T08:38:15.0709206Z         }
2026-06-21T08:38:15.0709297Z       }
2026-06-21T08:38:15.0709393Z     },
2026-06-21T08:38:15.0709502Z     {
2026-06-21T08:38:15.0709636Z       "id": "REQ-INST-4",
2026-06-21T08:38:15.0709831Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T08:38:15.0709947Z       "requiredStages": [
2026-06-21T08:38:15.0710060Z         "impl",
2026-06-21T08:38:15.0710169Z         "unit"
2026-06-21T08:38:15.0710282Z       ],
2026-06-21T08:38:15.0710387Z       "stages": {
2026-06-21T08:38:15.0710490Z         "doc": {
2026-06-21T08:38:15.0710609Z           "complete": false,
2026-06-21T08:38:15.0710720Z           "evidence": []
2026-06-21T08:38:15.0710829Z         },
2026-06-21T08:38:15.0710934Z         "impl": {
2026-06-21T08:38:15.0711058Z           "complete": true,
2026-06-21T08:38:15.0711162Z           "evidence": [
2026-06-21T08:38:15.0711264Z             {
2026-06-21T08:38:15.0711420Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0711525Z               "line": 385
2026-06-21T08:38:15.0711635Z             },
2026-06-21T08:38:15.0711740Z             {
2026-06-21T08:38:15.0711888Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0711992Z               "line": 202
2026-06-21T08:38:15.0712097Z             },
2026-06-21T08:38:15.0712198Z             {
2026-06-21T08:38:15.0712340Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0712450Z               "line": 234
2026-06-21T08:38:15.0712552Z             },
2026-06-21T08:38:15.0712654Z             {
2026-06-21T08:38:15.0712789Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0712899Z               "line": 274
2026-06-21T08:38:15.0713002Z             }
2026-06-21T08:38:15.0713097Z           ]
2026-06-21T08:38:15.0713207Z         },
2026-06-21T08:38:15.0713308Z         "int": {
2026-06-21T08:38:15.0713426Z           "complete": false,
2026-06-21T08:38:15.0713542Z           "evidence": []
2026-06-21T08:38:15.0713641Z         },
2026-06-21T08:38:15.0713750Z         "unit": {
2026-06-21T08:38:15.0713866Z           "complete": true,
2026-06-21T08:38:15.0713975Z           "evidence": [
2026-06-21T08:38:15.0714080Z             {
2026-06-21T08:38:15.0714228Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0714337Z               "line": 889
2026-06-21T08:38:15.0714448Z             },
2026-06-21T08:38:15.0714557Z             {
2026-06-21T08:38:15.0714815Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0714919Z               "line": 561
2026-06-21T08:38:15.0715116Z             },
2026-06-21T08:38:15.0718348Z             {
2026-06-21T08:38:15.0718531Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0718651Z               "line": 668
2026-06-21T08:38:15.0718751Z             },
2026-06-21T08:38:15.0718850Z             {
2026-06-21T08:38:15.0719085Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0719189Z               "line": 750
2026-06-21T08:38:15.0719314Z             }
2026-06-21T08:38:15.0719409Z           ]
2026-06-21T08:38:15.0719523Z         }
2026-06-21T08:38:15.0719634Z       }
2026-06-21T08:38:15.0719738Z     },
2026-06-21T08:38:15.0719842Z     {
2026-06-21T08:38:15.0719953Z       "id": "REQ-INST-5",
2026-06-21T08:38:15.0720167Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T08:38:15.0720278Z       "requiredStages": [
2026-06-21T08:38:15.0720391Z         "impl",
2026-06-21T08:38:15.0720497Z         "unit",
2026-06-21T08:38:15.0720607Z         "int"
2026-06-21T08:38:15.0720714Z       ],
2026-06-21T08:38:15.0720824Z       "stages": {
2026-06-21T08:38:15.0720929Z         "doc": {
2026-06-21T08:38:15.0721046Z           "complete": false,
2026-06-21T08:38:15.0721156Z           "evidence": []
2026-06-21T08:38:15.0721251Z         },
2026-06-21T08:38:15.0721346Z         "impl": {
2026-06-21T08:38:15.0721465Z           "complete": true,
2026-06-21T08:38:15.0721585Z           "evidence": [
2026-06-21T08:38:15.0721694Z             {
2026-06-21T08:38:15.0721862Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T08:38:15.0721966Z               "line": 85
2026-06-21T08:38:15.0722075Z             },
2026-06-21T08:38:15.0722181Z             {
2026-06-21T08:38:15.0722332Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0722443Z               "line": 68
2026-06-21T08:38:15.0722552Z             },
2026-06-21T08:38:15.0722652Z             {
2026-06-21T08:38:15.0722797Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0722900Z               "line": 99
2026-06-21T08:38:15.0723006Z             },
2026-06-21T08:38:15.0723107Z             {
2026-06-21T08:38:15.0723243Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0723359Z               "line": 183
2026-06-21T08:38:15.0723460Z             },
2026-06-21T08:38:15.0723562Z             {
2026-06-21T08:38:15.0723701Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0723801Z               "line": 314
2026-06-21T08:38:15.0723915Z             }
2026-06-21T08:38:15.0724010Z           ]
2026-06-21T08:38:15.0724116Z         },
2026-06-21T08:38:15.0724215Z         "int": {
2026-06-21T08:38:15.0724325Z           "complete": true,
2026-06-21T08:38:15.0724435Z           "evidence": [
2026-06-21T08:38:15.0724530Z             {
2026-06-21T08:38:15.0724688Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.0724793Z               "line": 156
2026-06-21T08:38:15.0724902Z             },
2026-06-21T08:38:15.0725008Z             {
2026-06-21T08:38:15.0725155Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T08:38:15.0725259Z               "line": 145
2026-06-21T08:38:15.0725366Z             },
2026-06-21T08:38:15.0725474Z             {
2026-06-21T08:38:15.0725623Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0725727Z               "line": 707
2026-06-21T08:38:15.0725831Z             },
2026-06-21T08:38:15.0725931Z             {
2026-06-21T08:38:15.0726082Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0726195Z               "line": 1069
2026-06-21T08:38:15.0726301Z             }
2026-06-21T08:38:15.0726402Z           ]
2026-06-21T08:38:15.0726510Z         },
2026-06-21T08:38:15.0726621Z         "unit": {
2026-06-21T08:38:15.0726735Z           "complete": true,
2026-06-21T08:38:15.0726988Z           "evidence": [
2026-06-21T08:38:15.0727092Z             {
2026-06-21T08:38:15.0727241Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0727421Z               "line": 552
2026-06-21T08:38:15.0727526Z             },
2026-06-21T08:38:15.0727636Z             {
2026-06-21T08:38:15.0727765Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.0727880Z               "line": 595
2026-06-21T08:38:15.0727984Z             },
2026-06-21T08:38:15.0728094Z             {
2026-06-21T08:38:15.0728228Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T08:38:15.0728346Z               "line": 219
2026-06-21T08:38:15.0728446Z             }
2026-06-21T08:38:15.0728543Z           ]
2026-06-21T08:38:15.0728647Z         }
2026-06-21T08:38:15.0728746Z       }
2026-06-21T08:38:15.0728851Z     },
2026-06-21T08:38:15.0729034Z     {
2026-06-21T08:38:15.0729154Z       "id": "REQ-INST-6",
2026-06-21T08:38:15.0729377Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T08:38:15.0729493Z       "requiredStages": [
2026-06-21T08:38:15.0729602Z         "impl",
2026-06-21T08:38:15.0729711Z         "unit",
2026-06-21T08:38:15.0729812Z         "int"
2026-06-21T08:38:15.0729917Z       ],
2026-06-21T08:38:15.0730016Z       "stages": {
2026-06-21T08:38:15.0730127Z         "doc": {
2026-06-21T08:38:15.0730241Z           "complete": true,
2026-06-21T08:38:15.0730350Z           "evidence": [
2026-06-21T08:38:15.0730442Z             {
2026-06-21T08:38:15.0730570Z               "path": "docs/DEFERRED.md",
2026-06-21T08:38:15.0730674Z               "line": 13
2026-06-21T08:38:15.0730780Z             }
2026-06-21T08:38:15.0730889Z           ]
2026-06-21T08:38:15.0730989Z         },
2026-06-21T08:38:15.0731095Z         "impl": {
2026-06-21T08:38:15.0731200Z           "complete": true,
2026-06-21T08:38:15.0731313Z           "evidence": [
2026-06-21T08:38:15.0731417Z             {
2026-06-21T08:38:15.0731568Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.0731677Z               "line": 391
2026-06-21T08:38:15.0731783Z             },
2026-06-21T08:38:15.0731887Z             {
2026-06-21T08:38:15.0732030Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T08:38:15.0732135Z               "line": 27
2026-06-21T08:38:15.0732239Z             },
2026-06-21T08:38:15.0732340Z             {
2026-06-21T08:38:15.0732488Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T08:38:15.0732597Z               "line": 73
2026-06-21T08:38:15.0732698Z             },
2026-06-21T08:38:15.0732793Z             {
2026-06-21T08:38:15.0732936Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T08:38:15.0733047Z               "line": 182
2026-06-21T08:38:15.0733151Z             },
2026-06-21T08:38:15.0733256Z             {
2026-06-21T08:38:15.0733404Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0733513Z               "line": 426
2026-06-21T08:38:15.0733619Z             },
2026-06-21T08:38:15.0733724Z             {
2026-06-21T08:38:15.0733866Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T08:38:15.0733977Z               "line": 31
2026-06-21T08:38:15.0734085Z             },
2026-06-21T08:38:15.0734189Z             {
2026-06-21T08:38:15.0734328Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.0734437Z               "line": 202
2026-06-21T08:38:15.0734546Z             },
2026-06-21T08:38:15.0734638Z             {
2026-06-21T08:38:15.0734771Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:15.0734885Z               "line": 83
2026-06-21T08:38:15.0734991Z             },
2026-06-21T08:38:15.0735100Z             {
2026-06-21T08:38:15.0735229Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0735358Z               "line": 1849
2026-06-21T08:38:15.0735447Z             },
2026-06-21T08:38:15.0735553Z             {
2026-06-21T08:38:15.0735686Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.0735926Z               "line": 179
2026-06-21T08:38:15.0736034Z             },
2026-06-21T08:38:15.0736236Z             {
2026-06-21T08:38:15.0736373Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.0736486Z               "line": 215
2026-06-21T08:38:15.0736591Z             }
2026-06-21T08:38:15.0736699Z           ]
2026-06-21T08:38:15.0736793Z         },
2026-06-21T08:38:15.0736899Z         "int": {
2026-06-21T08:38:15.0737009Z           "complete": true,
2026-06-21T08:38:15.0737123Z           "evidence": [
2026-06-21T08:38:15.0737224Z             {
2026-06-21T08:38:15.0737380Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0737481Z               "line": 721
2026-06-21T08:38:15.0737586Z             },
2026-06-21T08:38:15.0737695Z             {
2026-06-21T08:38:15.0737844Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0737962Z               "line": 1114
2026-06-21T08:38:15.0738077Z             },
2026-06-21T08:38:15.0738168Z             {
2026-06-21T08:38:15.0738301Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.0738406Z               "line": 726
2026-06-21T08:38:15.0738511Z             }
2026-06-21T08:38:15.0738615Z           ]
2026-06-21T08:38:15.0738716Z         },
2026-06-21T08:38:15.0738826Z         "unit": {
2026-06-21T08:38:15.0738930Z           "complete": true,
2026-06-21T08:38:15.0739127Z           "evidence": [
2026-06-21T08:38:15.0739225Z             {
2026-06-21T08:38:15.0739387Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.0739491Z               "line": 661
2026-06-21T08:38:15.0739590Z             },
2026-06-21T08:38:15.0739699Z             {
2026-06-21T08:38:15.0739833Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.0739933Z               "line": 899
2026-06-21T08:38:15.0740033Z             },
2026-06-21T08:38:15.0740143Z             {
2026-06-21T08:38:15.0740280Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T08:38:15.0740391Z               "line": 66
2026-06-21T08:38:15.0740506Z             },
2026-06-21T08:38:15.0740604Z             {
2026-06-21T08:38:15.0740739Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.0740844Z               "line": 297
2026-06-21T08:38:15.0740949Z             },
2026-06-21T08:38:15.0741040Z             {
2026-06-21T08:38:15.0741172Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:15.0741288Z               "line": 203
2026-06-21T08:38:15.0741383Z             }
2026-06-21T08:38:15.0741491Z           ]
2026-06-21T08:38:15.0741588Z         }
2026-06-21T08:38:15.0741698Z       }
2026-06-21T08:38:15.0741797Z     },
2026-06-21T08:38:15.0741896Z     {
2026-06-21T08:38:15.0742006Z       "id": "REQ-INST-7",
2026-06-21T08:38:15.0742170Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T08:38:15.0742290Z       "requiredStages": [
2026-06-21T08:38:15.0742381Z         "impl",
2026-06-21T08:38:15.0742489Z         "unit",
2026-06-21T08:38:15.0742590Z         "int"
2026-06-21T08:38:15.0742700Z       ],
2026-06-21T08:38:15.0742814Z       "stages": {
2026-06-21T08:38:15.0742920Z         "doc": {
2026-06-21T08:38:15.0743029Z           "complete": false,
2026-06-21T08:38:15.0743138Z           "evidence": []
2026-06-21T08:38:15.0743240Z         },
2026-06-21T08:38:15.0743344Z         "impl": {
2026-06-21T08:38:15.0743453Z           "complete": true,
2026-06-21T08:38:15.0743559Z           "evidence": [
2026-06-21T08:38:15.0743654Z             {
2026-06-21T08:38:15.0743801Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.0743902Z               "line": 436
2026-06-21T08:38:15.0744011Z             },
2026-06-21T08:38:15.0744106Z             {
2026-06-21T08:38:15.0744265Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0744373Z               "line": 27
2026-06-21T08:38:15.0744479Z             },
2026-06-21T08:38:15.0744678Z             {
2026-06-21T08:38:15.0744830Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0745021Z               "line": 207
2026-06-21T08:38:15.0745121Z             },
2026-06-21T08:38:15.0745222Z             {
2026-06-21T08:38:15.0745373Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0745475Z               "line": 344
2026-06-21T08:38:15.0745579Z             },
2026-06-21T08:38:15.0745683Z             {
2026-06-21T08:38:15.0745833Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T08:38:15.0745941Z               "line": 59
2026-06-21T08:38:15.0746046Z             },
2026-06-21T08:38:15.0746148Z             {
2026-06-21T08:38:15.0746285Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0746385Z               "line": 41
2026-06-21T08:38:15.0746486Z             },
2026-06-21T08:38:15.0746594Z             {
2026-06-21T08:38:15.0746743Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0746862Z               "line": 27
2026-06-21T08:38:15.0746971Z             },
2026-06-21T08:38:15.0747080Z             {
2026-06-21T08:38:15.0747216Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0747320Z               "line": 119
2026-06-21T08:38:15.0747421Z             },
2026-06-21T08:38:15.0747513Z             {
2026-06-21T08:38:15.0747659Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0747760Z               "line": 134
2026-06-21T08:38:15.0747865Z             },
2026-06-21T08:38:15.0747974Z             {
2026-06-21T08:38:15.0748113Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T08:38:15.0748221Z               "line": 139
2026-06-21T08:38:15.0748327Z             }
2026-06-21T08:38:15.0748427Z           ]
2026-06-21T08:38:15.0748527Z         },
2026-06-21T08:38:15.0748632Z         "int": {
2026-06-21T08:38:15.0748742Z           "complete": true,
2026-06-21T08:38:15.0748847Z           "evidence": [
2026-06-21T08:38:15.0749015Z             {
2026-06-21T08:38:15.0749161Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T08:38:15.0749276Z               "line": 145
2026-06-21T08:38:15.0749382Z             },
2026-06-21T08:38:15.0749485Z             {
2026-06-21T08:38:15.0749634Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0749739Z               "line": 665
2026-06-21T08:38:15.0749838Z             },
2026-06-21T08:38:15.0749947Z             {
2026-06-21T08:38:15.0750088Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0750206Z               "line": 964
2026-06-21T08:38:15.0750303Z             }
2026-06-21T08:38:15.0750398Z           ]
2026-06-21T08:38:15.0750502Z         },
2026-06-21T08:38:15.0750603Z         "unit": {
2026-06-21T08:38:15.0750718Z           "complete": true,
2026-06-21T08:38:15.0750822Z           "evidence": [
2026-06-21T08:38:15.0750928Z             {
2026-06-21T08:38:15.0751075Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0751194Z               "line": 1134
2026-06-21T08:38:15.0751299Z             },
2026-06-21T08:38:15.0751409Z             {
2026-06-21T08:38:15.0751567Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.0751676Z               "line": 1521
2026-06-21T08:38:15.0751785Z             },
2026-06-21T08:38:15.0751882Z             {
2026-06-21T08:38:15.0752033Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T08:38:15.0752143Z               "line": 84
2026-06-21T08:38:15.0752249Z             },
2026-06-21T08:38:15.0752348Z             {
2026-06-21T08:38:15.0752494Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0752599Z               "line": 812
2026-06-21T08:38:15.0752703Z             },
2026-06-21T08:38:15.0752807Z             {
2026-06-21T08:38:15.0752946Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0753055Z               "line": 823
2026-06-21T08:38:15.0753265Z             },
2026-06-21T08:38:15.0753365Z             {
2026-06-21T08:38:15.0753594Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0753694Z               "line": 838
2026-06-21T08:38:15.0753795Z             },
2026-06-21T08:38:15.0753890Z             {
2026-06-21T08:38:15.0754032Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0754143Z               "line": 166
2026-06-21T08:38:15.0754243Z             },
2026-06-21T08:38:15.0754342Z             {
2026-06-21T08:38:15.0754477Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0754581Z               "line": 181
2026-06-21T08:38:15.0754681Z             },
2026-06-21T08:38:15.0754778Z             {
2026-06-21T08:38:15.0754914Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.0755020Z               "line": 214
2026-06-21T08:38:15.0755126Z             }
2026-06-21T08:38:15.0755224Z           ]
2026-06-21T08:38:15.0755328Z         }
2026-06-21T08:38:15.0755433Z       }
2026-06-21T08:38:15.0755525Z     },
2026-06-21T08:38:15.0755633Z     {
2026-06-21T08:38:15.0755739Z       "id": "REQ-INST-8",
2026-06-21T08:38:15.0755915Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T08:38:15.0756025Z       "requiredStages": [
2026-06-21T08:38:15.0756130Z         "impl",
2026-06-21T08:38:15.0756244Z         "unit",
2026-06-21T08:38:15.0756344Z         "int"
2026-06-21T08:38:15.0756450Z       ],
2026-06-21T08:38:15.0756554Z       "stages": {
2026-06-21T08:38:15.0756659Z         "doc": {
2026-06-21T08:38:15.0756769Z           "complete": false,
2026-06-21T08:38:15.0756878Z           "evidence": []
2026-06-21T08:38:15.0756979Z         },
2026-06-21T08:38:15.0757089Z         "impl": {
2026-06-21T08:38:15.0757198Z           "complete": true,
2026-06-21T08:38:15.0757303Z           "evidence": [
2026-06-21T08:38:15.0757408Z             {
2026-06-21T08:38:15.0757540Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0757659Z               "line": 104
2026-06-21T08:38:15.0757763Z             },
2026-06-21T08:38:15.0757872Z             {
2026-06-21T08:38:15.0758010Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0758115Z               "line": 351
2026-06-21T08:38:15.0758224Z             },
2026-06-21T08:38:15.0758320Z             {
2026-06-21T08:38:15.0758448Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.0758557Z               "line": 391
2026-06-21T08:38:15.0758654Z             },
2026-06-21T08:38:15.0758768Z             {
2026-06-21T08:38:15.0758897Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.0759054Z               "line": 62
2026-06-21T08:38:15.0759144Z             }
2026-06-21T08:38:15.0759250Z           ]
2026-06-21T08:38:15.0759359Z         },
2026-06-21T08:38:15.0759464Z         "int": {
2026-06-21T08:38:15.0759599Z           "complete": true,
2026-06-21T08:38:15.0759711Z           "evidence": [
2026-06-21T08:38:15.0759822Z             {
2026-06-21T08:38:15.0759965Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.0760079Z               "line": 415
2026-06-21T08:38:15.0760185Z             },
2026-06-21T08:38:15.0760280Z             {
2026-06-21T08:38:15.0760426Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.0760536Z               "line": 1028
2026-06-21T08:38:15.0760639Z             }
2026-06-21T08:38:15.0760738Z           ]
2026-06-21T08:38:15.0760838Z         },
2026-06-21T08:38:15.0760949Z         "unit": {
2026-06-21T08:38:15.0761053Z           "complete": true,
2026-06-21T08:38:15.0761153Z           "evidence": [
2026-06-21T08:38:15.0761249Z             {
2026-06-21T08:38:15.0761392Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0761488Z               "line": 366
2026-06-21T08:38:15.0761592Z             },
2026-06-21T08:38:15.0761692Z             {
2026-06-21T08:38:15.0761926Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0762036Z               "line": 633
2026-06-21T08:38:15.0762240Z             },
2026-06-21T08:38:15.0762345Z             {
2026-06-21T08:38:15.0762480Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.0762583Z               "line": 116
2026-06-21T08:38:15.0762679Z             },
2026-06-21T08:38:15.0762766Z             {
2026-06-21T08:38:15.0762898Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.0763007Z               "line": 160
2026-06-21T08:38:15.0763112Z             }
2026-06-21T08:38:15.0763211Z           ]
2026-06-21T08:38:15.0763314Z         }
2026-06-21T08:38:15.0763415Z       }
2026-06-21T08:38:15.0763516Z     },
2026-06-21T08:38:15.0763620Z     {
2026-06-21T08:38:15.0763725Z       "id": "REQ-INST-9",
2026-06-21T08:38:15.0763925Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T08:38:15.0764025Z       "requiredStages": [
2026-06-21T08:38:15.0764145Z         "impl",
2026-06-21T08:38:15.0764254Z         "unit"
2026-06-21T08:38:15.0764350Z       ],
2026-06-21T08:38:15.0764464Z       "stages": {
2026-06-21T08:38:15.0764573Z         "doc": {
2026-06-21T08:38:15.0764684Z           "complete": false,
2026-06-21T08:38:15.0764793Z           "evidence": []
2026-06-21T08:38:15.0764893Z         },
2026-06-21T08:38:15.0764999Z         "impl": {
2026-06-21T08:38:15.0765112Z           "complete": true,
2026-06-21T08:38:15.0765217Z           "evidence": [
2026-06-21T08:38:15.0765309Z             {
2026-06-21T08:38:15.0765451Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0765556Z               "line": 449
2026-06-21T08:38:15.0765662Z             }
2026-06-21T08:38:15.0765770Z           ]
2026-06-21T08:38:15.0765869Z         },
2026-06-21T08:38:15.0765975Z         "int": {
2026-06-21T08:38:15.0766081Z           "complete": false,
2026-06-21T08:38:15.0766188Z           "evidence": []
2026-06-21T08:38:15.0766295Z         },
2026-06-21T08:38:15.0766404Z         "unit": {
2026-06-21T08:38:15.0766513Z           "complete": true,
2026-06-21T08:38:15.0766624Z           "evidence": [
2026-06-21T08:38:15.0766728Z             {
2026-06-21T08:38:15.0766866Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0766972Z               "line": 1397
2026-06-21T08:38:15.0767061Z             },
2026-06-21T08:38:15.0767156Z             {
2026-06-21T08:38:15.0767296Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0767400Z               "line": 1406
2026-06-21T08:38:15.0767510Z             },
2026-06-21T08:38:15.0767611Z             {
2026-06-21T08:38:15.0767748Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0767858Z               "line": 1422
2026-06-21T08:38:15.0767964Z             },
2026-06-21T08:38:15.0768057Z             {
2026-06-21T08:38:15.0768186Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0768300Z               "line": 1434
2026-06-21T08:38:15.0768393Z             },
2026-06-21T08:38:15.0768498Z             {
2026-06-21T08:38:15.0768643Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.0768746Z               "line": 1454
2026-06-21T08:38:15.0768851Z             }
2026-06-21T08:38:15.0769027Z           ]
2026-06-21T08:38:15.0769137Z         }
2026-06-21T08:38:15.0769238Z       }
2026-06-21T08:38:15.0769347Z     },
2026-06-21T08:38:15.0769447Z     {
2026-06-21T08:38:15.0769553Z       "id": "REQ-INSTALL-1",
2026-06-21T08:38:15.0769766Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T08:38:15.0769873Z       "requiredStages": [
2026-06-21T08:38:15.0769981Z         "doc",
2026-06-21T08:38:15.0770081Z         "impl",
2026-06-21T08:38:15.0770192Z         "int"
2026-06-21T08:38:15.0770286Z       ],
2026-06-21T08:38:15.0770396Z       "stages": {
2026-06-21T08:38:15.0770507Z         "doc": {
2026-06-21T08:38:15.0770610Z           "complete": true,
2026-06-21T08:38:15.0770822Z           "evidence": [
2026-06-21T08:38:15.0770925Z             {
2026-06-21T08:38:15.0771144Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0771251Z               "line": 754
2026-06-21T08:38:15.0771355Z             }
2026-06-21T08:38:15.0771457Z           ]
2026-06-21T08:38:15.0771556Z         },
2026-06-21T08:38:15.0771670Z         "impl": {
2026-06-21T08:38:15.0771767Z           "complete": true,
2026-06-21T08:38:15.0771867Z           "evidence": [
2026-06-21T08:38:15.0771975Z             {
2026-06-21T08:38:15.0772110Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0772219Z               "line": 57
2026-06-21T08:38:15.0772319Z             },
2026-06-21T08:38:15.0772425Z             {
2026-06-21T08:38:15.0772534Z               "path": "installer/install.sh",
2026-06-21T08:38:15.0772653Z               "line": 52
2026-06-21T08:38:15.0772749Z             }
2026-06-21T08:38:15.0772858Z           ]
2026-06-21T08:38:15.0772948Z         },
2026-06-21T08:38:15.0773055Z         "int": {
2026-06-21T08:38:15.0773163Z           "complete": true,
2026-06-21T08:38:15.0773268Z           "evidence": [
2026-06-21T08:38:15.0773379Z             {
2026-06-21T08:38:15.0773506Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T08:38:15.0773620Z               "line": 21
2026-06-21T08:38:15.0773729Z             }
2026-06-21T08:38:15.0773823Z           ]
2026-06-21T08:38:15.0773927Z         },
2026-06-21T08:38:15.0774038Z         "unit": {
2026-06-21T08:38:15.0774147Z           "complete": false,
2026-06-21T08:38:15.0774252Z           "evidence": []
2026-06-21T08:38:15.0774352Z         }
2026-06-21T08:38:15.0774452Z       }
2026-06-21T08:38:15.0774556Z     },
2026-06-21T08:38:15.0774648Z     {
2026-06-21T08:38:15.0774757Z       "id": "REQ-INSTALL-10",
2026-06-21T08:38:15.0776213Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T08:38:15.0776344Z       "requiredStages": [
2026-06-21T08:38:15.0776448Z         "impl",
2026-06-21T08:38:15.0776549Z         "unit"
2026-06-21T08:38:15.0776650Z       ],
2026-06-21T08:38:15.0776748Z       "stages": {
2026-06-21T08:38:15.0776850Z         "doc": {
2026-06-21T08:38:15.0776964Z           "complete": false,
2026-06-21T08:38:15.0777073Z           "evidence": []
2026-06-21T08:38:15.0777175Z         },
2026-06-21T08:38:15.0777288Z         "impl": {
2026-06-21T08:38:15.0777392Z           "complete": true,
2026-06-21T08:38:15.0777503Z           "evidence": [
2026-06-21T08:38:15.0777608Z             {
2026-06-21T08:38:15.0777736Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0777842Z               "line": 191
2026-06-21T08:38:15.0777950Z             }
2026-06-21T08:38:15.0778060Z           ]
2026-06-21T08:38:15.0778166Z         },
2026-06-21T08:38:15.0778270Z         "int": {
2026-06-21T08:38:15.0778380Z           "complete": false,
2026-06-21T08:38:15.0778491Z           "evidence": []
2026-06-21T08:38:15.0778599Z         },
2026-06-21T08:38:15.0778698Z         "unit": {
2026-06-21T08:38:15.0778813Z           "complete": true,
2026-06-21T08:38:15.0778916Z           "evidence": [
2026-06-21T08:38:15.0779106Z             {
2026-06-21T08:38:15.0779245Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T08:38:15.0779354Z               "line": 211
2026-06-21T08:38:15.0779460Z             }
2026-06-21T08:38:15.0779564Z           ]
2026-06-21T08:38:15.0779659Z         }
2026-06-21T08:38:15.0779760Z       }
2026-06-21T08:38:15.0779860Z     },
2026-06-21T08:38:15.0779959Z     {
2026-06-21T08:38:15.0780080Z       "id": "REQ-INSTALL-11",
2026-06-21T08:38:15.0781849Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T08:38:15.0782159Z       "requiredStages": [
2026-06-21T08:38:15.0782264Z         "doc",
2026-06-21T08:38:15.0782369Z         "impl",
2026-06-21T08:38:15.0782469Z         "unit"
2026-06-21T08:38:15.0782574Z       ],
2026-06-21T08:38:15.0782675Z       "stages": {
2026-06-21T08:38:15.0782779Z         "doc": {
2026-06-21T08:38:15.0782889Z           "complete": true,
2026-06-21T08:38:15.0782994Z           "evidence": [
2026-06-21T08:38:15.0783103Z             {
2026-06-21T08:38:15.0783208Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0783309Z               "line": 138
2026-06-21T08:38:15.0783408Z             },
2026-06-21T08:38:15.0783509Z             {
2026-06-21T08:38:15.0783624Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.0783727Z               "line": 82
2026-06-21T08:38:15.0783828Z             }
2026-06-21T08:38:15.0783930Z           ]
2026-06-21T08:38:15.0784032Z         },
2026-06-21T08:38:15.0784132Z         "impl": {
2026-06-21T08:38:15.0784242Z           "complete": true,
2026-06-21T08:38:15.0784345Z           "evidence": [
2026-06-21T08:38:15.0784449Z             {
2026-06-21T08:38:15.0784588Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.0784692Z               "line": 223
2026-06-21T08:38:15.0784797Z             },
2026-06-21T08:38:15.0784884Z             {
2026-06-21T08:38:15.0785040Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0785141Z               "line": 99
2026-06-21T08:38:15.0785241Z             },
2026-06-21T08:38:15.0785346Z             {
2026-06-21T08:38:15.0785485Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.0785598Z               "line": 117
2026-06-21T08:38:15.0785693Z             },
2026-06-21T08:38:15.0785799Z             {
2026-06-21T08:38:15.0785927Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T08:38:15.0786037Z               "line": 332
2026-06-21T08:38:15.0786134Z             },
2026-06-21T08:38:15.0786237Z             {
2026-06-21T08:38:15.0786376Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.0786477Z               "line": 88
2026-06-21T08:38:15.0786580Z             },
2026-06-21T08:38:15.0786681Z             {
2026-06-21T08:38:15.0786820Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.0786923Z               "line": 104
2026-06-21T08:38:15.0787027Z             },
2026-06-21T08:38:15.0787133Z             {
2026-06-21T08:38:15.0787276Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0787385Z               "line": 297
2026-06-21T08:38:15.0787491Z             },
2026-06-21T08:38:15.0787595Z             {
2026-06-21T08:38:15.0787735Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0787839Z               "line": 332
2026-06-21T08:38:15.0787934Z             },
2026-06-21T08:38:15.0788034Z             {
2026-06-21T08:38:15.0788173Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0788277Z               "line": 523
2026-06-21T08:38:15.0788379Z             },
2026-06-21T08:38:15.0788473Z             {
2026-06-21T08:38:15.0788606Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0788712Z               "line": 546
2026-06-21T08:38:15.0788802Z             },
2026-06-21T08:38:15.0788907Z             {
2026-06-21T08:38:15.0789140Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0789397Z               "line": 561
2026-06-21T08:38:15.0789495Z             },
2026-06-21T08:38:15.0789585Z             {
2026-06-21T08:38:15.0789810Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.0789904Z               "line": 492
2026-06-21T08:38:15.0790010Z             }
2026-06-21T08:38:15.0790115Z           ]
2026-06-21T08:38:15.0790209Z         },
2026-06-21T08:38:15.0790306Z         "int": {
2026-06-21T08:38:15.0790410Z           "complete": false,
2026-06-21T08:38:15.0790519Z           "evidence": []
2026-06-21T08:38:15.0790616Z         },
2026-06-21T08:38:15.0790720Z         "unit": {
2026-06-21T08:38:15.0790838Z           "complete": true,
2026-06-21T08:38:15.0790936Z           "evidence": [
2026-06-21T08:38:15.0791035Z             {
2026-06-21T08:38:15.0791168Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0791279Z               "line": 799
2026-06-21T08:38:15.0791378Z             },
2026-06-21T08:38:15.0791482Z             {
2026-06-21T08:38:15.0791622Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0791725Z               "line": 811
2026-06-21T08:38:15.0791836Z             },
2026-06-21T08:38:15.0791937Z             {
2026-06-21T08:38:15.0792073Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.0792173Z               "line": 820
2026-06-21T08:38:15.0792278Z             }
2026-06-21T08:38:15.0792381Z           ]
2026-06-21T08:38:15.0792471Z         }
2026-06-21T08:38:15.0792572Z       }
2026-06-21T08:38:15.0792672Z     },
2026-06-21T08:38:15.0792776Z     {
2026-06-21T08:38:15.0792882Z       "id": "REQ-INSTALL-12",
2026-06-21T08:38:15.0795477Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T08:38:15.0795610Z       "requiredStages": [
2026-06-21T08:38:15.0795725Z         "doc",
2026-06-21T08:38:15.0795825Z         "impl",
2026-06-21T08:38:15.0795929Z         "unit",
2026-06-21T08:38:15.0796031Z         "int"
2026-06-21T08:38:15.0796130Z       ],
2026-06-21T08:38:15.0796235Z       "stages": {
2026-06-21T08:38:15.0796345Z         "doc": {
2026-06-21T08:38:15.0796459Z           "complete": true,
2026-06-21T08:38:15.0796564Z           "evidence": [
2026-06-21T08:38:15.0796674Z             {
2026-06-21T08:38:15.0796788Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0796902Z               "line": 185
2026-06-21T08:38:15.0797004Z             }
2026-06-21T08:38:15.0797107Z           ]
2026-06-21T08:38:15.0797212Z         },
2026-06-21T08:38:15.0797309Z         "impl": {
2026-06-21T08:38:15.0797422Z           "complete": true,
2026-06-21T08:38:15.0797531Z           "evidence": [
2026-06-21T08:38:15.0797635Z             {
2026-06-21T08:38:15.0797770Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0797879Z               "line": 27
2026-06-21T08:38:15.0797984Z             },
2026-06-21T08:38:15.0798075Z             {
2026-06-21T08:38:15.0801723Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0801858Z               "line": 223
2026-06-21T08:38:15.0801962Z             },
2026-06-21T08:38:15.0802062Z             {
2026-06-21T08:38:15.0802206Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0802478Z               "line": 5677
2026-06-21T08:38:15.0802577Z             }
2026-06-21T08:38:15.0802805Z           ]
2026-06-21T08:38:15.0802903Z         },
2026-06-21T08:38:15.0803007Z         "int": {
2026-06-21T08:38:15.0803117Z           "complete": true,
2026-06-21T08:38:15.0803228Z           "evidence": [
2026-06-21T08:38:15.0803322Z             {
2026-06-21T08:38:15.0803462Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T08:38:15.0803575Z               "line": 19
2026-06-21T08:38:15.0803665Z             }
2026-06-21T08:38:15.0803757Z           ]
2026-06-21T08:38:15.0803857Z         },
2026-06-21T08:38:15.0803965Z         "unit": {
2026-06-21T08:38:15.0804072Z           "complete": true,
2026-06-21T08:38:15.0804166Z           "evidence": [
2026-06-21T08:38:15.0804271Z             {
2026-06-21T08:38:15.0804415Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0804528Z               "line": 395
2026-06-21T08:38:15.0804634Z             },
2026-06-21T08:38:15.0804730Z             {
2026-06-21T08:38:15.0804872Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0804983Z               "line": 421
2026-06-21T08:38:15.0805088Z             },
2026-06-21T08:38:15.0805190Z             {
2026-06-21T08:38:15.0805315Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0805414Z               "line": 440
2026-06-21T08:38:15.0805517Z             },
2026-06-21T08:38:15.0805612Z             {
2026-06-21T08:38:15.0805747Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0805850Z               "line": 475
2026-06-21T08:38:15.0805956Z             },
2026-06-21T08:38:15.0806061Z             {
2026-06-21T08:38:15.0806184Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0806300Z               "line": 8665
2026-06-21T08:38:15.0806404Z             }
2026-06-21T08:38:15.0806499Z           ]
2026-06-21T08:38:15.0806605Z         }
2026-06-21T08:38:15.0806704Z       }
2026-06-21T08:38:15.0806804Z     },
2026-06-21T08:38:15.0806900Z     {
2026-06-21T08:38:15.0807010Z       "id": "REQ-INSTALL-2",
2026-06-21T08:38:15.0807167Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T08:38:15.0807273Z       "requiredStages": [
2026-06-21T08:38:15.0807372Z         "doc"
2026-06-21T08:38:15.0807472Z       ],
2026-06-21T08:38:15.0807583Z       "stages": {
2026-06-21T08:38:15.0807686Z         "doc": {
2026-06-21T08:38:15.0807796Z           "complete": true,
2026-06-21T08:38:15.0807898Z           "evidence": [
2026-06-21T08:38:15.0807987Z             {
2026-06-21T08:38:15.0808106Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0808210Z               "line": 755
2026-06-21T08:38:15.0808316Z             }
2026-06-21T08:38:15.0808429Z           ]
2026-06-21T08:38:15.0808535Z         },
2026-06-21T08:38:15.0808645Z         "impl": {
2026-06-21T08:38:15.0808749Z           "complete": false,
2026-06-21T08:38:15.0808860Z           "evidence": []
2026-06-21T08:38:15.0809044Z         },
2026-06-21T08:38:15.0809145Z         "int": {
2026-06-21T08:38:15.0809259Z           "complete": false,
2026-06-21T08:38:15.0809397Z           "evidence": []
2026-06-21T08:38:15.0809503Z         },
2026-06-21T08:38:15.0809602Z         "unit": {
2026-06-21T08:38:15.0809712Z           "complete": false,
2026-06-21T08:38:15.0809818Z           "evidence": []
2026-06-21T08:38:15.0809922Z         }
2026-06-21T08:38:15.0810022Z       }
2026-06-21T08:38:15.0810128Z     },
2026-06-21T08:38:15.0810232Z     {
2026-06-21T08:38:15.0810331Z       "id": "REQ-INSTALL-3",
2026-06-21T08:38:15.0810493Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T08:38:15.0810605Z       "requiredStages": [
2026-06-21T08:38:15.0810714Z         "impl",
2026-06-21T08:38:15.0810811Z         "int"
2026-06-21T08:38:15.0810915Z       ],
2026-06-21T08:38:15.0811015Z       "stages": {
2026-06-21T08:38:15.0811121Z         "doc": {
2026-06-21T08:38:15.0811230Z           "complete": false,
2026-06-21T08:38:15.0811440Z           "evidence": []
2026-06-21T08:38:15.0811545Z         },
2026-06-21T08:38:15.0811644Z         "impl": {
2026-06-21T08:38:15.0811850Z           "complete": true,
2026-06-21T08:38:15.0811955Z           "evidence": [
2026-06-21T08:38:15.0812051Z             {
2026-06-21T08:38:15.0812174Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0812274Z               "line": 100
2026-06-21T08:38:15.0812371Z             },
2026-06-21T08:38:15.0812474Z             {
2026-06-21T08:38:15.0812627Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0812728Z               "line": 111
2026-06-21T08:38:15.0812827Z             },
2026-06-21T08:38:15.0812918Z             {
2026-06-21T08:38:15.0813025Z               "path": "installer/install.sh",
2026-06-21T08:38:15.0813128Z               "line": 79
2026-06-21T08:38:15.0813231Z             }
2026-06-21T08:38:15.0813332Z           ]
2026-06-21T08:38:15.0813440Z         },
2026-06-21T08:38:15.0813543Z         "int": {
2026-06-21T08:38:15.0813654Z           "complete": true,
2026-06-21T08:38:15.0813749Z           "evidence": [
2026-06-21T08:38:15.0813858Z             {
2026-06-21T08:38:15.0814002Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T08:38:15.0814107Z               "line": 167
2026-06-21T08:38:15.0814206Z             }
2026-06-21T08:38:15.0814303Z           ]
2026-06-21T08:38:15.0814407Z         },
2026-06-21T08:38:15.0814502Z         "unit": {
2026-06-21T08:38:15.0814618Z           "complete": false,
2026-06-21T08:38:15.0814717Z           "evidence": []
2026-06-21T08:38:15.0814831Z         }
2026-06-21T08:38:15.0814933Z       }
2026-06-21T08:38:15.0815032Z     },
2026-06-21T08:38:15.0815127Z     {
2026-06-21T08:38:15.0815238Z       "id": "REQ-INSTALL-4",
2026-06-21T08:38:15.0815875Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T08:38:15.0815979Z       "requiredStages": [
2026-06-21T08:38:15.0816091Z         "impl",
2026-06-21T08:38:15.0816202Z         "unit"
2026-06-21T08:38:15.0816297Z       ],
2026-06-21T08:38:15.0816406Z       "stages": {
2026-06-21T08:38:15.0816506Z         "doc": {
2026-06-21T08:38:15.0816621Z           "complete": false,
2026-06-21T08:38:15.0816725Z           "evidence": []
2026-06-21T08:38:15.0816826Z         },
2026-06-21T08:38:15.0816927Z         "impl": {
2026-06-21T08:38:15.0817031Z           "complete": true,
2026-06-21T08:38:15.0817136Z           "evidence": [
2026-06-21T08:38:15.0817237Z             {
2026-06-21T08:38:15.0817383Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.0817490Z               "line": 165
2026-06-21T08:38:15.0817594Z             },
2026-06-21T08:38:15.0817693Z             {
2026-06-21T08:38:15.0817828Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0817937Z               "line": 29
2026-06-21T08:38:15.0818037Z             },
2026-06-21T08:38:15.0818148Z             {
2026-06-21T08:38:15.0818289Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0818386Z               "line": 288
2026-06-21T08:38:15.0818491Z             },
2026-06-21T08:38:15.0818590Z             {
2026-06-21T08:38:15.0818722Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0818824Z               "line": 356
2026-06-21T08:38:15.0818937Z             },
2026-06-21T08:38:15.0819114Z             {
2026-06-21T08:38:15.0819252Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0819371Z               "line": 386
2026-06-21T08:38:15.0819472Z             },
2026-06-21T08:38:15.0819595Z             {
2026-06-21T08:38:15.0819720Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0819824Z               "line": 434
2026-06-21T08:38:15.0819924Z             },
2026-06-21T08:38:15.0820025Z             {
2026-06-21T08:38:15.0820258Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0820383Z               "line": 5396
2026-06-21T08:38:15.0820616Z             }
2026-06-21T08:38:15.0820713Z           ]
2026-06-21T08:38:15.0820820Z         },
2026-06-21T08:38:15.0820929Z         "int": {
2026-06-21T08:38:15.0821039Z           "complete": false,
2026-06-21T08:38:15.0821142Z           "evidence": []
2026-06-21T08:38:15.0821237Z         },
2026-06-21T08:38:15.0821347Z         "unit": {
2026-06-21T08:38:15.0821466Z           "complete": true,
2026-06-21T08:38:15.0821594Z           "evidence": [
2026-06-21T08:38:15.0821714Z             {
2026-06-21T08:38:15.0821885Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.0821996Z               "line": 375
2026-06-21T08:38:15.0822096Z             },
2026-06-21T08:38:15.0822200Z             {
2026-06-21T08:38:15.0822348Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0822453Z               "line": 808
2026-06-21T08:38:15.0822562Z             },
2026-06-21T08:38:15.0822659Z             {
2026-06-21T08:38:15.0822806Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0822906Z               "line": 849
2026-06-21T08:38:15.0822997Z             },
2026-06-21T08:38:15.0823096Z             {
2026-06-21T08:38:15.0823236Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0823354Z               "line": 869
2026-06-21T08:38:15.0823450Z             },
2026-06-21T08:38:15.0823550Z             {
2026-06-21T08:38:15.0823669Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0823791Z               "line": 8403
2026-06-21T08:38:15.0823882Z             }
2026-06-21T08:38:15.0823986Z           ]
2026-06-21T08:38:15.0824094Z         }
2026-06-21T08:38:15.0824195Z       }
2026-06-21T08:38:15.0824310Z     },
2026-06-21T08:38:15.0824404Z     {
2026-06-21T08:38:15.0824514Z       "id": "REQ-INSTALL-5",
2026-06-21T08:38:15.0824992Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T08:38:15.0825130Z       "requiredStages": [
2026-06-21T08:38:15.0825244Z         "impl",
2026-06-21T08:38:15.0825344Z         "int"
2026-06-21T08:38:15.0825444Z       ],
2026-06-21T08:38:15.0825549Z       "stages": {
2026-06-21T08:38:15.0825644Z         "doc": {
2026-06-21T08:38:15.0825749Z           "complete": false,
2026-06-21T08:38:15.0825855Z           "evidence": []
2026-06-21T08:38:15.0825949Z         },
2026-06-21T08:38:15.0826054Z         "impl": {
2026-06-21T08:38:15.0826184Z           "complete": true,
2026-06-21T08:38:15.0826288Z           "evidence": [
2026-06-21T08:38:15.0826392Z             {
2026-06-21T08:38:15.0826506Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0826614Z               "line": 5
2026-06-21T08:38:15.0826704Z             },
2026-06-21T08:38:15.0826799Z             {
2026-06-21T08:38:15.0826929Z               "path": "installer/install.sh",
2026-06-21T08:38:15.0827038Z               "line": 6
2026-06-21T08:38:15.0827163Z             }
2026-06-21T08:38:15.0827262Z           ]
2026-06-21T08:38:15.0827371Z         },
2026-06-21T08:38:15.0827477Z         "int": {
2026-06-21T08:38:15.0827582Z           "complete": true,
2026-06-21T08:38:15.0827686Z           "evidence": [
2026-06-21T08:38:15.0827773Z             {
2026-06-21T08:38:15.0827911Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T08:38:15.0828015Z               "line": 22
2026-06-21T08:38:15.0828112Z             }
2026-06-21T08:38:15.0828221Z           ]
2026-06-21T08:38:15.0828311Z         },
2026-06-21T08:38:15.0828412Z         "unit": {
2026-06-21T08:38:15.0828520Z           "complete": false,
2026-06-21T08:38:15.0828631Z           "evidence": []
2026-06-21T08:38:15.0828727Z         }
2026-06-21T08:38:15.0828830Z       }
2026-06-21T08:38:15.0828936Z     },
2026-06-21T08:38:15.0829094Z     {
2026-06-21T08:38:15.0829316Z       "id": "REQ-INSTALL-6",
2026-06-21T08:38:15.0830604Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T08:38:15.0830832Z       "requiredStages": [
2026-06-21T08:38:15.0830943Z         "impl",
2026-06-21T08:38:15.0831033Z         "unit"
2026-06-21T08:38:15.0831137Z       ],
2026-06-21T08:38:15.0831239Z       "stages": {
2026-06-21T08:38:15.0831343Z         "doc": {
2026-06-21T08:38:15.0831447Z           "complete": false,
2026-06-21T08:38:15.0831552Z           "evidence": []
2026-06-21T08:38:15.0831656Z         },
2026-06-21T08:38:15.0831754Z         "impl": {
2026-06-21T08:38:15.0831859Z           "complete": true,
2026-06-21T08:38:15.0831969Z           "evidence": [
2026-06-21T08:38:15.0832078Z             {
2026-06-21T08:38:15.0832212Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0832322Z               "line": 61
2026-06-21T08:38:15.0832421Z             },
2026-06-21T08:38:15.0832513Z             {
2026-06-21T08:38:15.0832651Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.0832760Z               "line": 641
2026-06-21T08:38:15.0832861Z             },
2026-06-21T08:38:15.0832961Z             {
2026-06-21T08:38:15.0833108Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0833219Z               "line": 191
2026-06-21T08:38:15.0833314Z             },
2026-06-21T08:38:15.0833423Z             {
2026-06-21T08:38:15.0833553Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0833661Z               "line": 276
2026-06-21T08:38:15.0833762Z             },
2026-06-21T08:38:15.0833858Z             {
2026-06-21T08:38:15.0833986Z               "path": "crates/spt/src/main.rs",
2026-06-21T08:38:15.0834082Z               "line": 43
2026-06-21T08:38:15.0834196Z             },
2026-06-21T08:38:15.0834290Z             {
2026-06-21T08:38:15.0834419Z               "path": "installer/install.sh",
2026-06-21T08:38:15.0834518Z               "line": 104
2026-06-21T08:38:15.0834607Z             }
2026-06-21T08:38:15.0834702Z           ]
2026-06-21T08:38:15.0834798Z         },
2026-06-21T08:38:15.0834898Z         "int": {
2026-06-21T08:38:15.0834998Z           "complete": false,
2026-06-21T08:38:15.0835104Z           "evidence": []
2026-06-21T08:38:15.0835204Z         },
2026-06-21T08:38:15.0835303Z         "unit": {
2026-06-21T08:38:15.0835409Z           "complete": true,
2026-06-21T08:38:15.0835518Z           "evidence": [
2026-06-21T08:38:15.0835622Z             {
2026-06-21T08:38:15.0835748Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T08:38:15.0835847Z               "line": 894
2026-06-21T08:38:15.0835952Z             }
2026-06-21T08:38:15.0836053Z           ]
2026-06-21T08:38:15.0836157Z         }
2026-06-21T08:38:15.0836257Z       }
2026-06-21T08:38:15.0836363Z     },
2026-06-21T08:38:15.0836458Z     {
2026-06-21T08:38:15.0836552Z       "id": "REQ-INSTALL-7",
2026-06-21T08:38:15.0837641Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T08:38:15.0837747Z       "requiredStages": [
2026-06-21T08:38:15.0837841Z         "impl"
2026-06-21T08:38:15.0837927Z       ],
2026-06-21T08:38:15.0838014Z       "stages": {
2026-06-21T08:38:15.0838089Z         "doc": {
2026-06-21T08:38:15.0838180Z           "complete": false,
2026-06-21T08:38:15.0838271Z           "evidence": []
2026-06-21T08:38:15.0838447Z         },
2026-06-21T08:38:15.0838527Z         "impl": {
2026-06-21T08:38:15.0838624Z           "complete": true,
2026-06-21T08:38:15.0838786Z           "evidence": [
2026-06-21T08:38:15.0838866Z             {
2026-06-21T08:38:15.0839043Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0839134Z               "line": 3920
2026-06-21T08:38:15.0839210Z             },
2026-06-21T08:38:15.0839302Z             {
2026-06-21T08:38:15.0839414Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0839511Z               "line": 157
2026-06-21T08:38:15.0839588Z             }
2026-06-21T08:38:15.0839677Z           ]
2026-06-21T08:38:15.0839762Z         },
2026-06-21T08:38:15.0839843Z         "int": {
2026-06-21T08:38:15.0839934Z           "complete": false,
2026-06-21T08:38:15.0840020Z           "evidence": []
2026-06-21T08:38:15.0840109Z         },
2026-06-21T08:38:15.0840196Z         "unit": {
2026-06-21T08:38:15.0840292Z           "complete": false,
2026-06-21T08:38:15.0840391Z           "evidence": []
2026-06-21T08:38:15.0840472Z         }
2026-06-21T08:38:15.0840554Z       }
2026-06-21T08:38:15.0840649Z     },
2026-06-21T08:38:15.0840739Z     {
2026-06-21T08:38:15.0840830Z       "id": "REQ-INSTALL-8",
2026-06-21T08:38:15.0841861Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T08:38:15.0841959Z       "requiredStages": [
2026-06-21T08:38:15.0842040Z         "impl"
2026-06-21T08:38:15.0842131Z       ],
2026-06-21T08:38:15.0842212Z       "stages": {
2026-06-21T08:38:15.0842300Z         "doc": {
2026-06-21T08:38:15.0842395Z           "complete": false,
2026-06-21T08:38:15.0842486Z           "evidence": []
2026-06-21T08:38:15.0842578Z         },
2026-06-21T08:38:15.0842657Z         "impl": {
2026-06-21T08:38:15.0842753Z           "complete": true,
2026-06-21T08:38:15.0842830Z           "evidence": [
2026-06-21T08:38:15.0842920Z             {
2026-06-21T08:38:15.0843029Z               "path": "installer/install.ps1",
2026-06-21T08:38:15.0843121Z               "line": 184
2026-06-21T08:38:15.0843206Z             },
2026-06-21T08:38:15.0843291Z             {
2026-06-21T08:38:15.0843407Z               "path": "installer/install.sh",
2026-06-21T08:38:15.0843492Z               "line": 121
2026-06-21T08:38:15.0843583Z             }
2026-06-21T08:38:15.0843668Z           ]
2026-06-21T08:38:15.0843755Z         },
2026-06-21T08:38:15.0843835Z         "int": {
2026-06-21T08:38:15.0843921Z           "complete": false,
2026-06-21T08:38:15.0844012Z           "evidence": []
2026-06-21T08:38:15.0844094Z         },
2026-06-21T08:38:15.0844183Z         "unit": {
2026-06-21T08:38:15.0844279Z           "complete": false,
2026-06-21T08:38:15.0844370Z           "evidence": []
2026-06-21T08:38:15.0844456Z         }
2026-06-21T08:38:15.0844531Z       }
2026-06-21T08:38:15.0844618Z     },
2026-06-21T08:38:15.0844695Z     {
2026-06-21T08:38:15.0844780Z       "id": "REQ-INSTALL-9",
2026-06-21T08:38:15.0845964Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T08:38:15.0846064Z       "requiredStages": [
2026-06-21T08:38:15.0846158Z         "doc",
2026-06-21T08:38:15.0846245Z         "impl",
2026-06-21T08:38:15.0846322Z         "unit"
2026-06-21T08:38:15.0846397Z       ],
2026-06-21T08:38:15.0846478Z       "stages": {
2026-06-21T08:38:15.0846569Z         "doc": {
2026-06-21T08:38:15.0846769Z           "complete": true,
2026-06-21T08:38:15.0846864Z           "evidence": [
2026-06-21T08:38:15.0847032Z             {
2026-06-21T08:38:15.0847127Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0847214Z               "line": 771
2026-06-21T08:38:15.0847300Z             }
2026-06-21T08:38:15.0847384Z           ]
2026-06-21T08:38:15.0847469Z         },
2026-06-21T08:38:15.0847559Z         "impl": {
2026-06-21T08:38:15.0847645Z           "complete": true,
2026-06-21T08:38:15.0847734Z           "evidence": [
2026-06-21T08:38:15.0847814Z             {
2026-06-21T08:38:15.0847925Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0848011Z               "line": 2535
2026-06-21T08:38:15.0848082Z             },
2026-06-21T08:38:15.0848168Z             {
2026-06-21T08:38:15.0848264Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0848354Z               "line": 2559
2026-06-21T08:38:15.0848439Z             }
2026-06-21T08:38:15.0848531Z           ]
2026-06-21T08:38:15.0848616Z         },
2026-06-21T08:38:15.0848697Z         "int": {
2026-06-21T08:38:15.0848802Z           "complete": false,
2026-06-21T08:38:15.0848888Z           "evidence": []
2026-06-21T08:38:15.0849050Z         },
2026-06-21T08:38:15.0849150Z         "unit": {
2026-06-21T08:38:15.0849246Z           "complete": true,
2026-06-21T08:38:15.0849374Z           "evidence": [
2026-06-21T08:38:15.0849456Z             {
2026-06-21T08:38:15.0849561Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0849646Z               "line": 7591
2026-06-21T08:38:15.0849731Z             },
2026-06-21T08:38:15.0849819Z             {
2026-06-21T08:38:15.0849922Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0850009Z               "line": 8433
2026-06-21T08:38:15.0850095Z             }
2026-06-21T08:38:15.0850176Z           ]
2026-06-21T08:38:15.0850261Z         }
2026-06-21T08:38:15.0850350Z       }
2026-06-21T08:38:15.0850441Z     },
2026-06-21T08:38:15.0850533Z     {
2026-06-21T08:38:15.0850628Z       "id": "REQ-KICK-1",
2026-06-21T08:38:15.0853071Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T08:38:15.0853180Z       "requiredStages": [
2026-06-21T08:38:15.0853279Z         "doc",
2026-06-21T08:38:15.0853366Z         "impl",
2026-06-21T08:38:15.0853457Z         "unit",
2026-06-21T08:38:15.0853541Z         "int"
2026-06-21T08:38:15.0853623Z       ],
2026-06-21T08:38:15.0853719Z       "stages": {
2026-06-21T08:38:15.0853795Z         "doc": {
2026-06-21T08:38:15.0853894Z           "complete": true,
2026-06-21T08:38:15.0853977Z           "evidence": [
2026-06-21T08:38:15.0854071Z             {
2026-06-21T08:38:15.0854166Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0854247Z               "line": 342
2026-06-21T08:38:15.0854334Z             }
2026-06-21T08:38:15.0854414Z           ]
2026-06-21T08:38:15.0854495Z         },
2026-06-21T08:38:15.0854577Z         "impl": {
2026-06-21T08:38:15.0854673Z           "complete": true,
2026-06-21T08:38:15.0854762Z           "evidence": [
2026-06-21T08:38:15.0854843Z             {
2026-06-21T08:38:15.0854964Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.0855053Z               "line": 41
2026-06-21T08:38:15.0855255Z             },
2026-06-21T08:38:15.0855340Z             {
2026-06-21T08:38:15.0855534Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.0855625Z               "line": 701
2026-06-21T08:38:15.0855709Z             }
2026-06-21T08:38:15.0855794Z           ]
2026-06-21T08:38:15.0855880Z         },
2026-06-21T08:38:15.0855971Z         "int": {
2026-06-21T08:38:15.0856056Z           "complete": true,
2026-06-21T08:38:15.0856151Z           "evidence": [
2026-06-21T08:38:15.0856234Z             {
2026-06-21T08:38:15.0856348Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.0856485Z               "line": 913
2026-06-21T08:38:15.0856572Z             }
2026-06-21T08:38:15.0856663Z           ]
2026-06-21T08:38:15.0856747Z         },
2026-06-21T08:38:15.0856839Z         "unit": {
2026-06-21T08:38:15.0856934Z           "complete": true,
2026-06-21T08:38:15.0857019Z           "evidence": [
2026-06-21T08:38:15.0857101Z             {
2026-06-21T08:38:15.0857226Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.0857319Z               "line": 205
2026-06-21T08:38:15.0857411Z             }
2026-06-21T08:38:15.0857502Z           ]
2026-06-21T08:38:15.0857592Z         }
2026-06-21T08:38:15.0857677Z       }
2026-06-21T08:38:15.0857759Z     },
2026-06-21T08:38:15.0857836Z     {
2026-06-21T08:38:15.0857939Z       "id": "REQ-MANIFEST-1",
2026-06-21T08:38:15.0858134Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T08:38:15.0858284Z       "requiredStages": [
2026-06-21T08:38:15.0858393Z         "doc",
2026-06-21T08:38:15.0858485Z         "impl",
2026-06-21T08:38:15.0858576Z         "unit"
2026-06-21T08:38:15.0858661Z       ],
2026-06-21T08:38:15.0858756Z       "stages": {
2026-06-21T08:38:15.0858843Z         "doc": {
2026-06-21T08:38:15.0859004Z           "complete": true,
2026-06-21T08:38:15.0859106Z           "evidence": [
2026-06-21T08:38:15.0859186Z             {
2026-06-21T08:38:15.0859300Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.0859396Z               "line": 19
2026-06-21T08:38:15.0859486Z             }
2026-06-21T08:38:15.0859572Z           ]
2026-06-21T08:38:15.0859667Z         },
2026-06-21T08:38:15.0859759Z         "impl": {
2026-06-21T08:38:15.0859844Z           "complete": true,
2026-06-21T08:38:15.0859939Z           "evidence": [
2026-06-21T08:38:15.0860026Z             {
2026-06-21T08:38:15.0860149Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0860235Z               "line": 18
2026-06-21T08:38:15.0860326Z             }
2026-06-21T08:38:15.0860408Z           ]
2026-06-21T08:38:15.0860492Z         },
2026-06-21T08:38:15.0860588Z         "int": {
2026-06-21T08:38:15.0860679Z           "complete": false,
2026-06-21T08:38:15.0860788Z           "evidence": []
2026-06-21T08:38:15.0860878Z         },
2026-06-21T08:38:15.0860973Z         "unit": {
2026-06-21T08:38:15.0861079Z           "complete": true,
2026-06-21T08:38:15.0861178Z           "evidence": [
2026-06-21T08:38:15.0861273Z             {
2026-06-21T08:38:15.0861403Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0861502Z               "line": 1029
2026-06-21T08:38:15.0861597Z             },
2026-06-21T08:38:15.0861684Z             {
2026-06-21T08:38:15.0861812Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0861907Z               "line": 1325
2026-06-21T08:38:15.0861985Z             },
2026-06-21T08:38:15.0862075Z             {
2026-06-21T08:38:15.0862198Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0862290Z               "line": 1337
2026-06-21T08:38:15.0862380Z             },
2026-06-21T08:38:15.0862470Z             {
2026-06-21T08:38:15.0862590Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0862680Z               "line": 1348
2026-06-21T08:38:15.0862765Z             },
2026-06-21T08:38:15.0862856Z             {
2026-06-21T08:38:15.0863071Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0863170Z               "line": 1365
2026-06-21T08:38:15.0863346Z             },
2026-06-21T08:38:15.0863430Z             {
2026-06-21T08:38:15.0863549Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0863626Z               "line": 1379
2026-06-21T08:38:15.0863721Z             },
2026-06-21T08:38:15.0863801Z             {
2026-06-21T08:38:15.0863916Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0864017Z               "line": 1495
2026-06-21T08:38:15.0864097Z             },
2026-06-21T08:38:15.0864178Z             {
2026-06-21T08:38:15.0864298Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0864393Z               "line": 1510
2026-06-21T08:38:15.0864488Z             },
2026-06-21T08:38:15.0864565Z             {
2026-06-21T08:38:15.0864694Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0864794Z               "line": 1621
2026-06-21T08:38:15.0864870Z             },
2026-06-21T08:38:15.0864956Z             {
2026-06-21T08:38:15.0865084Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0865171Z               "line": 1632
2026-06-21T08:38:15.0865252Z             }
2026-06-21T08:38:15.0865342Z           ]
2026-06-21T08:38:15.0865428Z         }
2026-06-21T08:38:15.0865515Z       }
2026-06-21T08:38:15.0865600Z     },
2026-06-21T08:38:15.0865686Z     {
2026-06-21T08:38:15.0865791Z       "id": "REQ-MANIFEST-2",
2026-06-21T08:38:15.0866325Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T08:38:15.0866431Z       "requiredStages": [
2026-06-21T08:38:15.0866593Z         "doc",
2026-06-21T08:38:15.0866688Z         "impl",
2026-06-21T08:38:15.0866765Z         "unit"
2026-06-21T08:38:15.0866846Z       ],
2026-06-21T08:38:15.0866932Z       "stages": {
2026-06-21T08:38:15.0867026Z         "doc": {
2026-06-21T08:38:15.0867128Z           "complete": true,
2026-06-21T08:38:15.0867223Z           "evidence": [
2026-06-21T08:38:15.0867317Z             {
2026-06-21T08:38:15.0867418Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0867517Z               "line": 75
2026-06-21T08:38:15.0867603Z             }
2026-06-21T08:38:15.0867694Z           ]
2026-06-21T08:38:15.0867786Z         },
2026-06-21T08:38:15.0867879Z         "impl": {
2026-06-21T08:38:15.0867980Z           "complete": true,
2026-06-21T08:38:15.0868072Z           "evidence": [
2026-06-21T08:38:15.0868171Z             {
2026-06-21T08:38:15.0868295Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0868382Z               "line": 82
2026-06-21T08:38:15.0868472Z             },
2026-06-21T08:38:15.0868556Z             {
2026-06-21T08:38:15.0868680Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0868770Z               "line": 15
2026-06-21T08:38:15.0868864Z             },
2026-06-21T08:38:15.0869016Z             {
2026-06-21T08:38:15.0869127Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0869240Z               "line": 65
2026-06-21T08:38:15.0869331Z             },
2026-06-21T08:38:15.0869431Z             {
2026-06-21T08:38:15.0869560Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0869656Z               "line": 83
2026-06-21T08:38:15.0869741Z             },
2026-06-21T08:38:15.0869822Z             {
2026-06-21T08:38:15.0869947Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0870042Z               "line": 183
2026-06-21T08:38:15.0870127Z             },
2026-06-21T08:38:15.0870218Z             {
2026-06-21T08:38:15.0870343Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0870442Z               "line": 527
2026-06-21T08:38:15.0870528Z             },
2026-06-21T08:38:15.0870610Z             {
2026-06-21T08:38:15.0870881Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0870987Z               "line": 553
2026-06-21T08:38:15.0871162Z             },
2026-06-21T08:38:15.0871234Z             {
2026-06-21T08:38:15.0871362Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0871452Z               "line": 671
2026-06-21T08:38:15.0871538Z             },
2026-06-21T08:38:15.0871614Z             {
2026-06-21T08:38:15.0871743Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0871843Z               "line": 696
2026-06-21T08:38:15.0871920Z             },
2026-06-21T08:38:15.0872006Z             {
2026-06-21T08:38:15.0872124Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0872221Z               "line": 719
2026-06-21T08:38:15.0872306Z             },
2026-06-21T08:38:15.0872391Z             {
2026-06-21T08:38:15.0872510Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0872611Z               "line": 734
2026-06-21T08:38:15.0872697Z             },
2026-06-21T08:38:15.0872782Z             {
2026-06-21T08:38:15.0872902Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0872992Z               "line": 5567
2026-06-21T08:38:15.0873078Z             },
2026-06-21T08:38:15.0873165Z             {
2026-06-21T08:38:15.0873274Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0873373Z               "line": 5581
2026-06-21T08:38:15.0873455Z             },
2026-06-21T08:38:15.0873537Z             {
2026-06-21T08:38:15.0873640Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0873740Z               "line": 5615
2026-06-21T08:38:15.0873826Z             }
2026-06-21T08:38:15.0873910Z           ]
2026-06-21T08:38:15.0873990Z         },
2026-06-21T08:38:15.0874080Z         "int": {
2026-06-21T08:38:15.0874186Z           "complete": false,
2026-06-21T08:38:15.0874271Z           "evidence": []
2026-06-21T08:38:15.0874356Z         },
2026-06-21T08:38:15.0874453Z         "unit": {
2026-06-21T08:38:15.0874548Z           "complete": true,
2026-06-21T08:38:15.0874648Z           "evidence": [
2026-06-21T08:38:15.0874738Z             {
2026-06-21T08:38:15.0874868Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.0874958Z               "line": 921
2026-06-21T08:38:15.0875049Z             },
2026-06-21T08:38:15.0875130Z             {
2026-06-21T08:38:15.0875249Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0875339Z               "line": 211
2026-06-21T08:38:15.0875422Z             },
2026-06-21T08:38:15.0875516Z             {
2026-06-21T08:38:15.0875635Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0875737Z               "line": 272
2026-06-21T08:38:15.0875835Z             },
2026-06-21T08:38:15.0875926Z             {
2026-06-21T08:38:15.0876051Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0876141Z               "line": 313
2026-06-21T08:38:15.0876236Z             },
2026-06-21T08:38:15.0876322Z             {
2026-06-21T08:38:15.0876451Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0876554Z               "line": 325
2026-06-21T08:38:15.0876640Z             },
2026-06-21T08:38:15.0876721Z             {
2026-06-21T08:38:15.0876838Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0876933Z               "line": 336
2026-06-21T08:38:15.0880644Z             },
2026-06-21T08:38:15.0880768Z             {
2026-06-21T08:38:15.0880931Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0881017Z               "line": 345
2026-06-21T08:38:15.0881102Z             },
2026-06-21T08:38:15.0881189Z             {
2026-06-21T08:38:15.0881316Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0881403Z               "line": 361
2026-06-21T08:38:15.0881485Z             },
2026-06-21T08:38:15.0881570Z             {
2026-06-21T08:38:15.0881852Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0881950Z               "line": 444
2026-06-21T08:38:15.0882117Z             },
2026-06-21T08:38:15.0882203Z             {
2026-06-21T08:38:15.0882336Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0882422Z               "line": 958
2026-06-21T08:38:15.0882504Z             },
2026-06-21T08:38:15.0882585Z             {
2026-06-21T08:38:15.0882712Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0882800Z               "line": 982
2026-06-21T08:38:15.0882880Z             },
2026-06-21T08:38:15.0882970Z             {
2026-06-21T08:38:15.0883090Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0883185Z               "line": 1008
2026-06-21T08:38:15.0883257Z             },
2026-06-21T08:38:15.0883337Z             {
2026-06-21T08:38:15.0883448Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0883538Z               "line": 1027
2026-06-21T08:38:15.0883638Z             },
2026-06-21T08:38:15.0883715Z             {
2026-06-21T08:38:15.0883843Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0883929Z               "line": 1058
2026-06-21T08:38:15.0884015Z             },
2026-06-21T08:38:15.0884097Z             {
2026-06-21T08:38:15.0884219Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:15.0884304Z               "line": 309
2026-06-21T08:38:15.0884391Z             },
2026-06-21T08:38:15.0884480Z             {
2026-06-21T08:38:15.0884593Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.0884679Z               "line": 606
2026-06-21T08:38:15.0884766Z             },
2026-06-21T08:38:15.0884855Z             {
2026-06-21T08:38:15.0884960Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0885046Z               "line": 8610
2026-06-21T08:38:15.0885137Z             },
2026-06-21T08:38:15.0885213Z             {
2026-06-21T08:38:15.0885333Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0885418Z               "line": 9558
2026-06-21T08:38:15.0885508Z             }
2026-06-21T08:38:15.0885599Z           ]
2026-06-21T08:38:15.0885690Z         }
2026-06-21T08:38:15.0885776Z       }
2026-06-21T08:38:15.0885866Z     },
2026-06-21T08:38:15.0885952Z     {
2026-06-21T08:38:15.0886052Z       "id": "REQ-MANIFEST-3",
2026-06-21T08:38:15.0886729Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T08:38:15.0886834Z       "requiredStages": [
2026-06-21T08:38:15.0886921Z         "doc",
2026-06-21T08:38:15.0887016Z         "impl",
2026-06-21T08:38:15.0887101Z         "unit"
2026-06-21T08:38:15.0887186Z       ],
2026-06-21T08:38:15.0887277Z       "stages": {
2026-06-21T08:38:15.0887361Z         "doc": {
2026-06-21T08:38:15.0887450Z           "complete": true,
2026-06-21T08:38:15.0887541Z           "evidence": [
2026-06-21T08:38:15.0887628Z             {
2026-06-21T08:38:15.0887732Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0887827Z               "line": 81
2026-06-21T08:38:15.0887914Z             }
2026-06-21T08:38:15.0887999Z           ]
2026-06-21T08:38:15.0888085Z         },
2026-06-21T08:38:15.0888175Z         "impl": {
2026-06-21T08:38:15.0888267Z           "complete": true,
2026-06-21T08:38:15.0888353Z           "evidence": [
2026-06-21T08:38:15.0888432Z             {
2026-06-21T08:38:15.0888567Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0888657Z               "line": 92
2026-06-21T08:38:15.0888743Z             },
2026-06-21T08:38:15.0888824Z             {
2026-06-21T08:38:15.0889034Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0889115Z               "line": 101
2026-06-21T08:38:15.0889206Z             },
2026-06-21T08:38:15.0889296Z             {
2026-06-21T08:38:15.0889526Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0889625Z               "line": 132
2026-06-21T08:38:15.0889786Z             },
2026-06-21T08:38:15.0889872Z             {
2026-06-21T08:38:15.0889998Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0890093Z               "line": 577
2026-06-21T08:38:15.0890180Z             },
2026-06-21T08:38:15.0890262Z             {
2026-06-21T08:38:15.0890384Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0890471Z               "line": 633
2026-06-21T08:38:15.0890561Z             },
2026-06-21T08:38:15.0890637Z             {
2026-06-21T08:38:15.0890737Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0890848Z               "line": 5628
2026-06-21T08:38:15.0890933Z             },
2026-06-21T08:38:15.0891013Z             {
2026-06-21T08:38:15.0891115Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0891214Z               "line": 5654
2026-06-21T08:38:15.0891290Z             }
2026-06-21T08:38:15.0891371Z           ]
2026-06-21T08:38:15.0891459Z         },
2026-06-21T08:38:15.0891553Z         "int": {
2026-06-21T08:38:15.0891638Z           "complete": false,
2026-06-21T08:38:15.0891725Z           "evidence": []
2026-06-21T08:38:15.0891811Z         },
2026-06-21T08:38:15.0891886Z         "unit": {
2026-06-21T08:38:15.0891972Z           "complete": true,
2026-06-21T08:38:15.0892064Z           "evidence": [
2026-06-21T08:38:15.0892145Z             {
2026-06-21T08:38:15.0892268Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0892355Z               "line": 371
2026-06-21T08:38:15.0892436Z             },
2026-06-21T08:38:15.0892520Z             {
2026-06-21T08:38:15.0892643Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0892730Z               "line": 429
2026-06-21T08:38:15.0892816Z             },
2026-06-21T08:38:15.0892901Z             {
2026-06-21T08:38:15.0893006Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0893106Z               "line": 1082
2026-06-21T08:38:15.0893187Z             },
2026-06-21T08:38:15.0893268Z             {
2026-06-21T08:38:15.0893379Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.0893460Z               "line": 8703
2026-06-21T08:38:15.0893549Z             }
2026-06-21T08:38:15.0893631Z           ]
2026-06-21T08:38:15.0893712Z         }
2026-06-21T08:38:15.0893783Z       }
2026-06-21T08:38:15.0893873Z     },
2026-06-21T08:38:15.0893956Z     {
2026-06-21T08:38:15.0894051Z       "id": "REQ-MANIFEST-4",
2026-06-21T08:38:15.0894755Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T08:38:15.0894845Z       "requiredStages": [
2026-06-21T08:38:15.0894931Z         "doc",
2026-06-21T08:38:15.0895016Z         "impl",
2026-06-21T08:38:15.0895096Z         "unit"
2026-06-21T08:38:15.0895181Z       ],
2026-06-21T08:38:15.0895263Z       "stages": {
2026-06-21T08:38:15.0895350Z         "doc": {
2026-06-21T08:38:15.0895430Z           "complete": true,
2026-06-21T08:38:15.0895525Z           "evidence": [
2026-06-21T08:38:15.0895611Z             {
2026-06-21T08:38:15.0895697Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0895792Z               "line": 88
2026-06-21T08:38:15.0895869Z             }
2026-06-21T08:38:15.0895950Z           ]
2026-06-21T08:38:15.0896031Z         },
2026-06-21T08:38:15.0896111Z         "impl": {
2026-06-21T08:38:15.0896198Z           "complete": true,
2026-06-21T08:38:15.0896283Z           "evidence": [
2026-06-21T08:38:15.0896369Z             {
2026-06-21T08:38:15.0896488Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0896584Z               "line": 100
2026-06-21T08:38:15.0896670Z             },
2026-06-21T08:38:15.0896755Z             {
2026-06-21T08:38:15.0896970Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0897060Z               "line": 183
2026-06-21T08:38:15.0897238Z             },
2026-06-21T08:38:15.0897318Z             {
2026-06-21T08:38:15.0897438Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0897524Z               "line": 83
2026-06-21T08:38:15.0897609Z             },
2026-06-21T08:38:15.0897698Z             {
2026-06-21T08:38:15.0897813Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.0897912Z               "line": 629
2026-06-21T08:38:15.0897992Z             },
2026-06-21T08:38:15.0898072Z             {
2026-06-21T08:38:15.0898188Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.0898273Z               "line": 654
2026-06-21T08:38:15.0898353Z             }
2026-06-21T08:38:15.0898435Z           ]
2026-06-21T08:38:15.0898522Z         },
2026-06-21T08:38:15.0898602Z         "int": {
2026-06-21T08:38:15.0898697Z           "complete": false,
2026-06-21T08:38:15.0898784Z           "evidence": []
2026-06-21T08:38:15.0898865Z         },
2026-06-21T08:38:15.0899016Z         "unit": {
2026-06-21T08:38:15.0899104Z           "complete": true,
2026-06-21T08:38:15.0899189Z           "evidence": [
2026-06-21T08:38:15.0899274Z             {
2026-06-21T08:38:15.0899399Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0899499Z               "line": 1445
2026-06-21T08:38:15.0899579Z             },
2026-06-21T08:38:15.0899685Z             {
2026-06-21T08:38:15.0899800Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0899880Z               "line": 1478
2026-06-21T08:38:15.0899961Z             },
2026-06-21T08:38:15.0900043Z             {
2026-06-21T08:38:15.0900162Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.0900255Z               "line": 988
2026-06-21T08:38:15.0900341Z             }
2026-06-21T08:38:15.0900422Z           ]
2026-06-21T08:38:15.0900516Z         }
2026-06-21T08:38:15.0900596Z       }
2026-06-21T08:38:15.0900678Z     },
2026-06-21T08:38:15.0900760Z     {
2026-06-21T08:38:15.0900878Z       "id": "REQ-MANIFEST-5",
2026-06-21T08:38:15.0903710Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T08:38:15.0903823Z       "requiredStages": [
2026-06-21T08:38:15.0903910Z         "doc",
2026-06-21T08:38:15.0904000Z         "impl",
2026-06-21T08:38:15.0904071Z         "unit"
2026-06-21T08:38:15.0904157Z       ],
2026-06-21T08:38:15.0904244Z       "stages": {
2026-06-21T08:38:15.0904334Z         "doc": {
2026-06-21T08:38:15.0904424Z           "complete": true,
2026-06-21T08:38:15.0904501Z           "evidence": [
2026-06-21T08:38:15.0904588Z             {
2026-06-21T08:38:15.0904672Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0904758Z               "line": 83
2026-06-21T08:38:15.0904840Z             }
2026-06-21T08:38:15.0904917Z           ]
2026-06-21T08:38:15.0905001Z         },
2026-06-21T08:38:15.0905082Z         "impl": {
2026-06-21T08:38:15.0905184Z           "complete": true,
2026-06-21T08:38:15.0905373Z           "evidence": [
2026-06-21T08:38:15.0905468Z             {
2026-06-21T08:38:15.0905586Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0905770Z               "line": 120
2026-06-21T08:38:15.0905852Z             }
2026-06-21T08:38:15.0905938Z           ]
2026-06-21T08:38:15.0906028Z         },
2026-06-21T08:38:15.0906109Z         "int": {
2026-06-21T08:38:15.0906200Z           "complete": false,
2026-06-21T08:38:15.0906281Z           "evidence": []
2026-06-21T08:38:15.0906357Z         },
2026-06-21T08:38:15.0906448Z         "unit": {
2026-06-21T08:38:15.0906538Z           "complete": true,
2026-06-21T08:38:15.0906628Z           "evidence": [
2026-06-21T08:38:15.0906714Z             {
2026-06-21T08:38:15.0906839Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T08:38:15.0906925Z               "line": 404
2026-06-21T08:38:15.0907010Z             },
2026-06-21T08:38:15.0907097Z             {
2026-06-21T08:38:15.0907215Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0907315Z               "line": 1155
2026-06-21T08:38:15.0907392Z             },
2026-06-21T08:38:15.0907469Z             {
2026-06-21T08:38:15.0907578Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0907663Z               "line": 1184
2026-06-21T08:38:15.0907751Z             },
2026-06-21T08:38:15.0907830Z             {
2026-06-21T08:38:15.0907945Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0908027Z               "line": 1224
2026-06-21T08:38:15.0908113Z             },
2026-06-21T08:38:15.0908197Z             {
2026-06-21T08:38:15.0908315Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0908407Z               "line": 1239
2026-06-21T08:38:15.0908481Z             }
2026-06-21T08:38:15.0908562Z           ]
2026-06-21T08:38:15.0908637Z         }
2026-06-21T08:38:15.0908724Z       }
2026-06-21T08:38:15.0908800Z     },
2026-06-21T08:38:15.0908885Z     {
2026-06-21T08:38:15.0909067Z       "id": "REQ-MANIFEST-6",
2026-06-21T08:38:15.0911156Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T08:38:15.0911262Z       "requiredStages": [
2026-06-21T08:38:15.0911339Z         "doc",
2026-06-21T08:38:15.0911419Z         "unit"
2026-06-21T08:38:15.0911495Z       ],
2026-06-21T08:38:15.0911577Z       "stages": {
2026-06-21T08:38:15.0911668Z         "doc": {
2026-06-21T08:38:15.0911757Z           "complete": true,
2026-06-21T08:38:15.0911843Z           "evidence": [
2026-06-21T08:38:15.0911925Z             {
2026-06-21T08:38:15.0912010Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0912096Z               "line": 141
2026-06-21T08:38:15.0912182Z             }
2026-06-21T08:38:15.0912264Z           ]
2026-06-21T08:38:15.0912348Z         },
2026-06-21T08:38:15.0912425Z         "impl": {
2026-06-21T08:38:15.0912521Z           "complete": false,
2026-06-21T08:38:15.0912607Z           "evidence": []
2026-06-21T08:38:15.0912688Z         },
2026-06-21T08:38:15.0912763Z         "int": {
2026-06-21T08:38:15.0912851Z           "complete": false,
2026-06-21T08:38:15.0912945Z           "evidence": []
2026-06-21T08:38:15.0913026Z         },
2026-06-21T08:38:15.0913117Z         "unit": {
2026-06-21T08:38:15.0913208Z           "complete": true,
2026-06-21T08:38:15.0913307Z           "evidence": [
2026-06-21T08:38:15.0913379Z             {
2026-06-21T08:38:15.0913617Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.0913711Z               "line": 1261
2026-06-21T08:38:15.0913888Z             }
2026-06-21T08:38:15.0913979Z           ]
2026-06-21T08:38:15.0914059Z         }
2026-06-21T08:38:15.0914141Z       }
2026-06-21T08:38:15.0914227Z     },
2026-06-21T08:38:15.0914317Z     {
2026-06-21T08:38:15.0914407Z       "id": "REQ-MANIFEST-7",
2026-06-21T08:38:15.0917366Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T08:38:15.0917480Z       "requiredStages": [
2026-06-21T08:38:15.0917565Z         "doc",
2026-06-21T08:38:15.0917652Z         "impl",
2026-06-21T08:38:15.0917737Z         "unit"
2026-06-21T08:38:15.0917823Z       ],
2026-06-21T08:38:15.0917909Z       "stages": {
2026-06-21T08:38:15.0917986Z         "doc": {
2026-06-21T08:38:15.0918066Z           "complete": true,
2026-06-21T08:38:15.0918157Z           "evidence": [
2026-06-21T08:38:15.0918243Z             {
2026-06-21T08:38:15.0918339Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.0918428Z               "line": 35
2026-06-21T08:38:15.0918505Z             }
2026-06-21T08:38:15.0918587Z           ]
2026-06-21T08:38:15.0918659Z         },
2026-06-21T08:38:15.0918747Z         "impl": {
2026-06-21T08:38:15.0918847Z           "complete": true,
2026-06-21T08:38:15.0918923Z           "evidence": [
2026-06-21T08:38:15.0919098Z             {
2026-06-21T08:38:15.0919212Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.0919303Z               "line": 54
2026-06-21T08:38:15.0919384Z             }
2026-06-21T08:38:15.0919469Z           ]
2026-06-21T08:38:15.0919551Z         },
2026-06-21T08:38:15.0919632Z         "int": {
2026-06-21T08:38:15.0919718Z           "complete": false,
2026-06-21T08:38:15.0919803Z           "evidence": []
2026-06-21T08:38:15.0919890Z         },
2026-06-21T08:38:15.0919970Z         "unit": {
2026-06-21T08:38:15.0920070Z           "complete": true,
2026-06-21T08:38:15.0920151Z           "evidence": [
2026-06-21T08:38:15.0920238Z             {
2026-06-21T08:38:15.0920361Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0920456Z               "line": 1638
2026-06-21T08:38:15.0920549Z             }
2026-06-21T08:38:15.0920624Z           ]
2026-06-21T08:38:15.0920709Z         }
2026-06-21T08:38:15.0920805Z       }
2026-06-21T08:38:15.0920882Z     },
2026-06-21T08:38:15.0920971Z     {
2026-06-21T08:38:15.0921058Z       "id": "REQ-MANIFEST-8",
2026-06-21T08:38:15.0923214Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T08:38:15.0923505Z       "requiredStages": [
2026-06-21T08:38:15.0923586Z         "doc",
2026-06-21T08:38:15.0923682Z         "impl",
2026-06-21T08:38:15.0923773Z         "unit",
2026-06-21T08:38:15.0923848Z         "int"
2026-06-21T08:38:15.0923930Z       ],
2026-06-21T08:38:15.0924011Z       "stages": {
2026-06-21T08:38:15.0924088Z         "doc": {
2026-06-21T08:38:15.0924168Z           "complete": true,
2026-06-21T08:38:15.0924247Z           "evidence": [
2026-06-21T08:38:15.0924333Z             {
2026-06-21T08:38:15.0924430Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.0924525Z               "line": 184
2026-06-21T08:38:15.0924605Z             },
2026-06-21T08:38:15.0924687Z             {
2026-06-21T08:38:15.0924787Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.0924872Z               "line": 46
2026-06-21T08:38:15.0924958Z             }
2026-06-21T08:38:15.0925050Z           ]
2026-06-21T08:38:15.0925135Z         },
2026-06-21T08:38:15.0925220Z         "impl": {
2026-06-21T08:38:15.0925326Z           "complete": true,
2026-06-21T08:38:15.0925407Z           "evidence": [
2026-06-21T08:38:15.0925493Z             {
2026-06-21T08:38:15.0925616Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0925703Z               "line": 222
2026-06-21T08:38:15.0925792Z             },
2026-06-21T08:38:15.0925878Z             {
2026-06-21T08:38:15.0926003Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0926084Z               "line": 306
2026-06-21T08:38:15.0926170Z             }
2026-06-21T08:38:15.0926251Z           ]
2026-06-21T08:38:15.0926333Z         },
2026-06-21T08:38:15.0926417Z         "int": {
2026-06-21T08:38:15.0926512Z           "complete": true,
2026-06-21T08:38:15.0926602Z           "evidence": [
2026-06-21T08:38:15.0926683Z             {
2026-06-21T08:38:15.0926805Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T08:38:15.0926910Z               "line": 18
2026-06-21T08:38:15.0927001Z             }
2026-06-21T08:38:15.0927091Z           ]
2026-06-21T08:38:15.0927177Z         },
2026-06-21T08:38:15.0927267Z         "unit": {
2026-06-21T08:38:15.0927363Z           "complete": true,
2026-06-21T08:38:15.0927458Z           "evidence": [
2026-06-21T08:38:15.0927549Z             {
2026-06-21T08:38:15.0927663Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.0927749Z               "line": 1656
2026-06-21T08:38:15.0927825Z             },
2026-06-21T08:38:15.0927912Z             {
2026-06-21T08:38:15.0928036Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0928125Z               "line": 316
2026-06-21T08:38:15.0928212Z             },
2026-06-21T08:38:15.0928298Z             {
2026-06-21T08:38:15.0928421Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0928503Z               "line": 332
2026-06-21T08:38:15.0928580Z             },
2026-06-21T08:38:15.0928669Z             {
2026-06-21T08:38:15.0928789Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.0928876Z               "line": 345
2026-06-21T08:38:15.0929037Z             },
2026-06-21T08:38:15.0929118Z             {
2026-06-21T08:38:15.0929224Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0929312Z               "line": 422
2026-06-21T08:38:15.0929398Z             },
2026-06-21T08:38:15.0929484Z             {
2026-06-21T08:38:15.0929606Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T08:38:15.0929686Z               "line": 436
2026-06-21T08:38:15.0929772Z             }
2026-06-21T08:38:15.0929859Z           ]
2026-06-21T08:38:15.0929940Z         }
2026-06-21T08:38:15.0930025Z       }
2026-06-21T08:38:15.0930106Z     },
2026-06-21T08:38:15.0930192Z     {
2026-06-21T08:38:15.0930273Z       "id": "REQ-MESH-1",
2026-06-21T08:38:15.0932367Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T08:38:15.0935218Z       "requiredStages": [
2026-06-21T08:38:15.0935432Z         "impl",
2026-06-21T08:38:15.0935595Z         "unit",
2026-06-21T08:38:15.0935766Z         "int"
2026-06-21T08:38:15.0935929Z       ],
2026-06-21T08:38:15.0936086Z       "stages": {
2026-06-21T08:38:15.0936258Z         "doc": {
2026-06-21T08:38:15.0936434Z           "complete": false,
2026-06-21T08:38:15.0936644Z           "evidence": []
2026-06-21T08:38:15.0936820Z         },
2026-06-21T08:38:15.0937010Z         "impl": {
2026-06-21T08:38:15.0937186Z           "complete": true,
2026-06-21T08:38:15.0937384Z           "evidence": [
2026-06-21T08:38:15.0937571Z             {
2026-06-21T08:38:15.0937794Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.0938056Z               "line": 972
2026-06-21T08:38:15.0938247Z             },
2026-06-21T08:38:15.0938419Z             {
2026-06-21T08:38:15.0938634Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0938895Z               "line": 38
2026-06-21T08:38:15.0939178Z             },
2026-06-21T08:38:15.0939339Z             {
2026-06-21T08:38:15.0939549Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0939817Z               "line": 161
2026-06-21T08:38:15.0940005Z             },
2026-06-21T08:38:15.0940176Z             {
2026-06-21T08:38:15.0940371Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0940637Z               "line": 206
2026-06-21T08:38:15.0940834Z             },
2026-06-21T08:38:15.0941100Z             {
2026-06-21T08:38:15.0941300Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.0941553Z               "line": 57
2026-06-21T08:38:15.0941735Z             },
2026-06-21T08:38:15.0941906Z             {
2026-06-21T08:38:15.0942125Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0942397Z               "line": 24
2026-06-21T08:38:15.0942592Z             },
2026-06-21T08:38:15.0942756Z             {
2026-06-21T08:38:15.0942961Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0943228Z               "line": 142
2026-06-21T08:38:15.0943419Z             },
2026-06-21T08:38:15.0943582Z             {
2026-06-21T08:38:15.0943781Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0944053Z               "line": 162
2026-06-21T08:38:15.0944240Z             }
2026-06-21T08:38:15.0944410Z           ]
2026-06-21T08:38:15.0944583Z         },
2026-06-21T08:38:15.0944744Z         "int": {
2026-06-21T08:38:15.0944931Z           "complete": true,
2026-06-21T08:38:15.0945137Z           "evidence": [
2026-06-21T08:38:15.0945330Z             {
2026-06-21T08:38:15.0945535Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T08:38:15.0945817Z               "line": 67
2026-06-21T08:38:15.0946002Z             },
2026-06-21T08:38:15.0946170Z             {
2026-06-21T08:38:15.0946378Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T08:38:15.0946632Z               "line": 93
2026-06-21T08:38:15.0946809Z             },
2026-06-21T08:38:15.0947027Z             {
2026-06-21T08:38:15.0947256Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T08:38:15.0947523Z               "line": 117
2026-06-21T08:38:15.0947708Z             },
2026-06-21T08:38:15.0948049Z             {
2026-06-21T08:38:15.0948259Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T08:38:15.0948732Z               "line": 134
2026-06-21T08:38:15.0948926Z             }
2026-06-21T08:38:15.0949194Z           ]
2026-06-21T08:38:15.0949361Z         },
2026-06-21T08:38:15.0949532Z         "unit": {
2026-06-21T08:38:15.0949714Z           "complete": true,
2026-06-21T08:38:15.0949919Z           "evidence": [
2026-06-21T08:38:15.0950090Z             {
2026-06-21T08:38:15.0950301Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.0950547Z               "line": 427
2026-06-21T08:38:15.0950736Z             },
2026-06-21T08:38:15.0950897Z             {
2026-06-21T08:38:15.0951098Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0951355Z               "line": 376
2026-06-21T08:38:15.0951541Z             },
2026-06-21T08:38:15.0951699Z             {
2026-06-21T08:38:15.0951909Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0952175Z               "line": 412
2026-06-21T08:38:15.0952370Z             },
2026-06-21T08:38:15.0952543Z             {
2026-06-21T08:38:15.0952752Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0953009Z               "line": 427
2026-06-21T08:38:15.0953185Z             },
2026-06-21T08:38:15.0953349Z             {
2026-06-21T08:38:15.0953546Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0953803Z               "line": 438
2026-06-21T08:38:15.0953997Z             },
2026-06-21T08:38:15.0954152Z             {
2026-06-21T08:38:15.0954360Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0954599Z               "line": 449
2026-06-21T08:38:15.0954776Z             },
2026-06-21T08:38:15.0954938Z             {
2026-06-21T08:38:15.0955139Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0955396Z               "line": 460
2026-06-21T08:38:15.0955595Z             },
2026-06-21T08:38:15.0955764Z             {
2026-06-21T08:38:15.0955985Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0956238Z               "line": 496
2026-06-21T08:38:15.0956420Z             },
2026-06-21T08:38:15.0956591Z             {
2026-06-21T08:38:15.0956787Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0957050Z               "line": 519
2026-06-21T08:38:15.0957244Z             },
2026-06-21T08:38:15.0957412Z             {
2026-06-21T08:38:15.0957617Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.0957869Z               "line": 546
2026-06-21T08:38:15.0962062Z             }
2026-06-21T08:38:15.0962269Z           ]
2026-06-21T08:38:15.0962445Z         }
2026-06-21T08:38:15.0962602Z       }
2026-06-21T08:38:15.0962760Z     },
2026-06-21T08:38:15.0962930Z     {
2026-06-21T08:38:15.0963099Z       "id": "REQ-MESH-2",
2026-06-21T08:38:15.0965859Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T08:38:15.0968191Z       "requiredStages": [
2026-06-21T08:38:15.0968386Z         "impl",
2026-06-21T08:38:15.0968705Z         "unit",
2026-06-21T08:38:15.0968876Z         "int"
2026-06-21T08:38:15.0969141Z       ],
2026-06-21T08:38:15.0969407Z       "stages": {
2026-06-21T08:38:15.0969594Z         "doc": {
2026-06-21T08:38:15.0969770Z           "complete": false,
2026-06-21T08:38:15.0969966Z           "evidence": []
2026-06-21T08:38:15.0970167Z         },
2026-06-21T08:38:15.0970323Z         "impl": {
2026-06-21T08:38:15.0970496Z           "complete": true,
2026-06-21T08:38:15.0970681Z           "evidence": [
2026-06-21T08:38:15.0970867Z             {
2026-06-21T08:38:15.0971068Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.0971325Z               "line": 807
2026-06-21T08:38:15.0971511Z             },
2026-06-21T08:38:15.0971676Z             {
2026-06-21T08:38:15.0971879Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0972123Z               "line": 118
2026-06-21T08:38:15.0972298Z             },
2026-06-21T08:38:15.0972462Z             {
2026-06-21T08:38:15.0972671Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0972909Z               "line": 347
2026-06-21T08:38:15.0973105Z             },
2026-06-21T08:38:15.0973262Z             {
2026-06-21T08:38:15.0973458Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0973697Z               "line": 389
2026-06-21T08:38:15.0973877Z             },
2026-06-21T08:38:15.0974040Z             {
2026-06-21T08:38:15.0974243Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0974484Z               "line": 403
2026-06-21T08:38:15.0974666Z             },
2026-06-21T08:38:15.0974817Z             {
2026-06-21T08:38:15.0975023Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0975267Z               "line": 492
2026-06-21T08:38:15.0975447Z             },
2026-06-21T08:38:15.0975601Z             {
2026-06-21T08:38:15.0975781Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0976024Z               "line": 507
2026-06-21T08:38:15.0976202Z             },
2026-06-21T08:38:15.0976362Z             {
2026-06-21T08:38:15.0976564Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.0976812Z               "line": 534
2026-06-21T08:38:15.0976992Z             },
2026-06-21T08:38:15.0977149Z             {
2026-06-21T08:38:15.0977349Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0977612Z               "line": 207
2026-06-21T08:38:15.0977778Z             },
2026-06-21T08:38:15.0977941Z             {
2026-06-21T08:38:15.0978141Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0978393Z               "line": 755
2026-06-21T08:38:15.0978574Z             },
2026-06-21T08:38:15.0978732Z             {
2026-06-21T08:38:15.0978927Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0979303Z               "line": 816
2026-06-21T08:38:15.0979484Z             },
2026-06-21T08:38:15.0979639Z             {
2026-06-21T08:38:15.0979831Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0980093Z               "line": 869
2026-06-21T08:38:15.0980268Z             },
2026-06-21T08:38:15.0980426Z             {
2026-06-21T08:38:15.0980616Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0980859Z               "line": 891
2026-06-21T08:38:15.0981032Z             },
2026-06-21T08:38:15.0981203Z             {
2026-06-21T08:38:15.0981380Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.0981628Z               "line": 122
2026-06-21T08:38:15.0981808Z             },
2026-06-21T08:38:15.0981967Z             {
2026-06-21T08:38:15.0982156Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0982393Z               "line": 44
2026-06-21T08:38:15.0982573Z             },
2026-06-21T08:38:15.0982726Z             {
2026-06-21T08:38:15.0982916Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0983275Z               "line": 184
2026-06-21T08:38:15.0983450Z             },
2026-06-21T08:38:15.0983604Z             {
2026-06-21T08:38:15.0983890Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0984118Z               "line": 211
2026-06-21T08:38:15.0984295Z             },
2026-06-21T08:38:15.0984447Z             {
2026-06-21T08:38:15.0984633Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0984856Z               "line": 251
2026-06-21T08:38:15.0985030Z             },
2026-06-21T08:38:15.0985188Z             {
2026-06-21T08:38:15.0985364Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0985598Z               "line": 275
2026-06-21T08:38:15.0985778Z             },
2026-06-21T08:38:15.0985936Z             {
2026-06-21T08:38:15.0986108Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0986336Z               "line": 289
2026-06-21T08:38:15.0986523Z             },
2026-06-21T08:38:15.0986694Z             {
2026-06-21T08:38:15.0986895Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0987134Z               "line": 300
2026-06-21T08:38:15.0987309Z             },
2026-06-21T08:38:15.0987468Z             {
2026-06-21T08:38:15.0987656Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0987886Z               "line": 313
2026-06-21T08:38:15.0988062Z             }
2026-06-21T08:38:15.0988229Z           ]
2026-06-21T08:38:15.0988372Z         },
2026-06-21T08:38:15.0988534Z         "int": {
2026-06-21T08:38:15.0988706Z           "complete": true,
2026-06-21T08:38:15.0988900Z           "evidence": [
2026-06-21T08:38:15.0989148Z             {
2026-06-21T08:38:15.0989364Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T08:38:15.0989626Z               "line": 116
2026-06-21T08:38:15.0989816Z             },
2026-06-21T08:38:15.0989972Z             {
2026-06-21T08:38:15.0990171Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T08:38:15.0990429Z               "line": 181
2026-06-21T08:38:15.0990595Z             }
2026-06-21T08:38:15.0990753Z           ]
2026-06-21T08:38:15.0990910Z         },
2026-06-21T08:38:15.0991072Z         "unit": {
2026-06-21T08:38:15.0991244Z           "complete": true,
2026-06-21T08:38:15.0991443Z           "evidence": [
2026-06-21T08:38:15.0991621Z             {
2026-06-21T08:38:15.0991820Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0992073Z               "line": 999
2026-06-21T08:38:15.0992251Z             },
2026-06-21T08:38:15.0992402Z             {
2026-06-21T08:38:15.0992599Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0992849Z               "line": 1016
2026-06-21T08:38:15.0993033Z             },
2026-06-21T08:38:15.0993186Z             {
2026-06-21T08:38:15.0993386Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0993620Z               "line": 1024
2026-06-21T08:38:15.0993796Z             },
2026-06-21T08:38:15.0993949Z             {
2026-06-21T08:38:15.0994140Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.0994387Z               "line": 1048
2026-06-21T08:38:15.0994583Z             },
2026-06-21T08:38:15.0994741Z             {
2026-06-21T08:38:15.0994935Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.0995193Z               "line": 1499
2026-06-21T08:38:15.0995378Z             },
2026-06-21T08:38:15.0995538Z             {
2026-06-21T08:38:15.0995719Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0995961Z               "line": 347
2026-06-21T08:38:15.0996139Z             },
2026-06-21T08:38:15.0996300Z             {
2026-06-21T08:38:15.0996492Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0996730Z               "line": 370
2026-06-21T08:38:15.0996911Z             },
2026-06-21T08:38:15.0997069Z             {
2026-06-21T08:38:15.0997254Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0997593Z               "line": 407
2026-06-21T08:38:15.0997883Z             },
2026-06-21T08:38:15.0998051Z             {
2026-06-21T08:38:15.0998245Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0998474Z               "line": 431
2026-06-21T08:38:15.0998656Z             },
2026-06-21T08:38:15.0998817Z             {
2026-06-21T08:38:15.0999085Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.0999342Z               "line": 483
2026-06-21T08:38:15.0999523Z             },
2026-06-21T08:38:15.0999704Z             {
2026-06-21T08:38:15.0999901Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.1000143Z               "line": 499
2026-06-21T08:38:15.1000324Z             },
2026-06-21T08:38:15.1000484Z             {
2026-06-21T08:38:15.1000674Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.1000908Z               "line": 514
2026-06-21T08:38:15.1001102Z             },
2026-06-21T08:38:15.1001265Z             {
2026-06-21T08:38:15.1001450Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.1001693Z               "line": 531
2026-06-21T08:38:15.1001871Z             }
2026-06-21T08:38:15.1002037Z           ]
2026-06-21T08:38:15.1002200Z         }
2026-06-21T08:38:15.1002347Z       }
2026-06-21T08:38:15.1002506Z     },
2026-06-21T08:38:15.1002666Z     {
2026-06-21T08:38:15.1002830Z       "id": "REQ-MESH-3",
2026-06-21T08:38:15.1004608Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T08:38:15.1006131Z       "requiredStages": [
2026-06-21T08:38:15.1006332Z         "impl",
2026-06-21T08:38:15.1006503Z         "unit",
2026-06-21T08:38:15.1006671Z         "int"
2026-06-21T08:38:15.1006837Z       ],
2026-06-21T08:38:15.1006985Z       "stages": {
2026-06-21T08:38:15.1007161Z         "doc": {
2026-06-21T08:38:15.1007338Z           "complete": false,
2026-06-21T08:38:15.1007543Z           "evidence": []
2026-06-21T08:38:15.1007724Z         },
2026-06-21T08:38:15.1007882Z         "impl": {
2026-06-21T08:38:15.1008062Z           "complete": true,
2026-06-21T08:38:15.1008268Z           "evidence": [
2026-06-21T08:38:15.1008449Z             {
2026-06-21T08:38:15.1008658Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.1008916Z               "line": 641
2026-06-21T08:38:15.1009187Z             }
2026-06-21T08:38:15.1009358Z           ]
2026-06-21T08:38:15.1009512Z         },
2026-06-21T08:38:15.1009678Z         "int": {
2026-06-21T08:38:15.1009850Z           "complete": true,
2026-06-21T08:38:15.1010049Z           "evidence": [
2026-06-21T08:38:15.1010227Z             {
2026-06-21T08:38:15.1010422Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T08:38:15.1010670Z               "line": 373
2026-06-21T08:38:15.1010851Z             },
2026-06-21T08:38:15.1011017Z             {
2026-06-21T08:38:15.1011230Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T08:38:15.1011478Z               "line": 436
2026-06-21T08:38:15.1011667Z             }
2026-06-21T08:38:15.1011820Z           ]
2026-06-21T08:38:15.1011977Z         },
2026-06-21T08:38:15.1012135Z         "unit": {
2026-06-21T08:38:15.1012311Z           "complete": true,
2026-06-21T08:38:15.1012502Z           "evidence": [
2026-06-21T08:38:15.1012684Z             {
2026-06-21T08:38:15.1012879Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.1013122Z               "line": 910
2026-06-21T08:38:15.1013428Z             }
2026-06-21T08:38:15.1013590Z           ]
2026-06-21T08:38:15.1013747Z         }
2026-06-21T08:38:15.1013998Z       }
2026-06-21T08:38:15.1014143Z     },
2026-06-21T08:38:15.1014296Z     {
2026-06-21T08:38:15.1014454Z       "id": "REQ-MESH-4",
2026-06-21T08:38:15.1016734Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T08:38:15.1018694Z       "requiredStages": [
2026-06-21T08:38:15.1018894Z         "impl",
2026-06-21T08:38:15.1019153Z         "unit",
2026-06-21T08:38:15.1019322Z         "int"
2026-06-21T08:38:15.1019476Z       ],
2026-06-21T08:38:15.1019632Z       "stages": {
2026-06-21T08:38:15.1019805Z         "doc": {
2026-06-21T08:38:15.1019984Z           "complete": false,
2026-06-21T08:38:15.1020196Z           "evidence": []
2026-06-21T08:38:15.1020377Z         },
2026-06-21T08:38:15.1020539Z         "impl": {
2026-06-21T08:38:15.1020716Z           "complete": true,
2026-06-21T08:38:15.1020915Z           "evidence": [
2026-06-21T08:38:15.1021106Z             {
2026-06-21T08:38:15.1021331Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:15.1021605Z               "line": 33
2026-06-21T08:38:15.1021785Z             },
2026-06-21T08:38:15.1021946Z             {
2026-06-21T08:38:15.1022161Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1022424Z               "line": 68
2026-06-21T08:38:15.1022600Z             },
2026-06-21T08:38:15.1022771Z             {
2026-06-21T08:38:15.1022972Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1023219Z               "line": 111
2026-06-21T08:38:15.1023391Z             },
2026-06-21T08:38:15.1023544Z             {
2026-06-21T08:38:15.1023744Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1023988Z               "line": 462
2026-06-21T08:38:15.1024174Z             },
2026-06-21T08:38:15.1024349Z             {
2026-06-21T08:38:15.1024549Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1024794Z               "line": 711
2026-06-21T08:38:15.1024981Z             },
2026-06-21T08:38:15.1025147Z             {
2026-06-21T08:38:15.1025343Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1025582Z               "line": 725
2026-06-21T08:38:15.1025772Z             },
2026-06-21T08:38:15.1025924Z             {
2026-06-21T08:38:15.1026116Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.1026368Z               "line": 132
2026-06-21T08:38:15.1026550Z             },
2026-06-21T08:38:15.1026716Z             {
2026-06-21T08:38:15.1026911Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1027159Z               "line": 26
2026-06-21T08:38:15.1027346Z             },
2026-06-21T08:38:15.1027510Z             {
2026-06-21T08:38:15.1027704Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1027957Z               "line": 97
2026-06-21T08:38:15.1028143Z             },
2026-06-21T08:38:15.1028300Z             {
2026-06-21T08:38:15.1028491Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1028736Z               "line": 119
2026-06-21T08:38:15.1028915Z             },
2026-06-21T08:38:15.1029163Z             {
2026-06-21T08:38:15.1029365Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1029797Z               "line": 82
2026-06-21T08:38:15.1029973Z             },
2026-06-21T08:38:15.1030225Z             {
2026-06-21T08:38:15.1030417Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1030656Z               "line": 111
2026-06-21T08:38:15.1030836Z             },
2026-06-21T08:38:15.1030994Z             {
2026-06-21T08:38:15.1031188Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1031428Z               "line": 232
2026-06-21T08:38:15.1031614Z             },
2026-06-21T08:38:15.1031771Z             {
2026-06-21T08:38:15.1031957Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1032189Z               "line": 245
2026-06-21T08:38:15.1032368Z             },
2026-06-21T08:38:15.1032530Z             {
2026-06-21T08:38:15.1032712Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1032941Z               "line": 4665
2026-06-21T08:38:15.1033136Z             }
2026-06-21T08:38:15.1033308Z           ]
2026-06-21T08:38:15.1033470Z         },
2026-06-21T08:38:15.1033632Z         "int": {
2026-06-21T08:38:15.1033809Z           "complete": true,
2026-06-21T08:38:15.1034009Z           "evidence": [
2026-06-21T08:38:15.1034191Z             {
2026-06-21T08:38:15.1034375Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T08:38:15.1034633Z               "line": 98
2026-06-21T08:38:15.1034811Z             },
2026-06-21T08:38:15.1034970Z             {
2026-06-21T08:38:15.1035175Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T08:38:15.1035422Z               "line": 140
2026-06-21T08:38:15.1035607Z             }
2026-06-21T08:38:15.1035770Z           ]
2026-06-21T08:38:15.1035917Z         },
2026-06-21T08:38:15.1036090Z         "unit": {
2026-06-21T08:38:15.1036284Z           "complete": true,
2026-06-21T08:38:15.1036485Z           "evidence": [
2026-06-21T08:38:15.1036666Z             {
2026-06-21T08:38:15.1036871Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:15.1037133Z               "line": 178
2026-06-21T08:38:15.1037321Z             },
2026-06-21T08:38:15.1040953Z             {
2026-06-21T08:38:15.1041192Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:15.1041473Z               "line": 242
2026-06-21T08:38:15.1041663Z             },
2026-06-21T08:38:15.1041836Z             {
2026-06-21T08:38:15.1042040Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1042302Z               "line": 1079
2026-06-21T08:38:15.1042476Z             },
2026-06-21T08:38:15.1042635Z             {
2026-06-21T08:38:15.1042835Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1043086Z               "line": 1109
2026-06-21T08:38:15.1043267Z             },
2026-06-21T08:38:15.1043425Z             {
2026-06-21T08:38:15.1043620Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T08:38:15.1043863Z               "line": 1129
2026-06-21T08:38:15.1044060Z             },
2026-06-21T08:38:15.1044216Z             {
2026-06-21T08:38:15.1044417Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T08:38:15.1044674Z               "line": 602
2026-06-21T08:38:15.1044859Z             },
2026-06-21T08:38:15.1045013Z             {
2026-06-21T08:38:15.1045198Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1045441Z               "line": 148
2026-06-21T08:38:15.1045621Z             },
2026-06-21T08:38:15.1045768Z             {
2026-06-21T08:38:15.1045962Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1046205Z               "line": 169
2026-06-21T08:38:15.1046373Z             },
2026-06-21T08:38:15.1046534Z             {
2026-06-21T08:38:15.1046721Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1046959Z               "line": 181
2026-06-21T08:38:15.1047140Z             },
2026-06-21T08:38:15.1047289Z             {
2026-06-21T08:38:15.1047627Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T08:38:15.1047871Z               "line": 202
2026-06-21T08:38:15.1048150Z             },
2026-06-21T08:38:15.1048311Z             {
2026-06-21T08:38:15.1048505Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1048743Z               "line": 375
2026-06-21T08:38:15.1048921Z             },
2026-06-21T08:38:15.1049154Z             {
2026-06-21T08:38:15.1049354Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1049588Z               "line": 407
2026-06-21T08:38:15.1049764Z             },
2026-06-21T08:38:15.1049926Z             {
2026-06-21T08:38:15.1050103Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1050331Z               "line": 10052
2026-06-21T08:38:15.1050514Z             }
2026-06-21T08:38:15.1050675Z           ]
2026-06-21T08:38:15.1050834Z         }
2026-06-21T08:38:15.1050989Z       }
2026-06-21T08:38:15.1051142Z     },
2026-06-21T08:38:15.1051303Z     {
2026-06-21T08:38:15.1051462Z       "id": "REQ-MESH-5",
2026-06-21T08:38:15.1053006Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T08:38:15.1054305Z       "requiredStages": [
2026-06-21T08:38:15.1054499Z         "impl",
2026-06-21T08:38:15.1054667Z         "unit"
2026-06-21T08:38:15.1054833Z       ],
2026-06-21T08:38:15.1054986Z       "stages": {
2026-06-21T08:38:15.1055157Z         "doc": {
2026-06-21T08:38:15.1055334Z           "complete": false,
2026-06-21T08:38:15.1055525Z           "evidence": []
2026-06-21T08:38:15.1055705Z         },
2026-06-21T08:38:15.1055797Z         "impl": {
2026-06-21T08:38:15.1055883Z           "complete": true,
2026-06-21T08:38:15.1055983Z           "evidence": [
2026-06-21T08:38:15.1056067Z             {
2026-06-21T08:38:15.1056195Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1056290Z               "line": 61
2026-06-21T08:38:15.1056370Z             },
2026-06-21T08:38:15.1056450Z             {
2026-06-21T08:38:15.1056561Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1056652Z               "line": 109
2026-06-21T08:38:15.1056732Z             },
2026-06-21T08:38:15.1056808Z             {
2026-06-21T08:38:15.1056924Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1057009Z               "line": 104
2026-06-21T08:38:15.1057085Z             },
2026-06-21T08:38:15.1057167Z             {
2026-06-21T08:38:15.1057286Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1057366Z               "line": 105
2026-06-21T08:38:15.1057457Z             },
2026-06-21T08:38:15.1057539Z             {
2026-06-21T08:38:15.1057667Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1057748Z               "line": 85
2026-06-21T08:38:15.1057826Z             },
2026-06-21T08:38:15.1057906Z             {
2026-06-21T08:38:15.1058034Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1058121Z               "line": 250
2026-06-21T08:38:15.1058202Z             },
2026-06-21T08:38:15.1058287Z             {
2026-06-21T08:38:15.1058407Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1058493Z               "line": 314
2026-06-21T08:38:15.1058568Z             },
2026-06-21T08:38:15.1058653Z             {
2026-06-21T08:38:15.1058777Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1058857Z               "line": 767
2026-06-21T08:38:15.1058932Z             },
2026-06-21T08:38:15.1059137Z             {
2026-06-21T08:38:15.1059409Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.1059500Z               "line": 101
2026-06-21T08:38:15.1059656Z             },
2026-06-21T08:38:15.1059743Z             {
2026-06-21T08:38:15.1059847Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.1059928Z               "line": 193
2026-06-21T08:38:15.1060014Z             }
2026-06-21T08:38:15.1060101Z           ]
2026-06-21T08:38:15.1060176Z         },
2026-06-21T08:38:15.1060262Z         "int": {
2026-06-21T08:38:15.1060358Z           "complete": false,
2026-06-21T08:38:15.1060444Z           "evidence": []
2026-06-21T08:38:15.1060525Z         },
2026-06-21T08:38:15.1060610Z         "unit": {
2026-06-21T08:38:15.1060697Z           "complete": true,
2026-06-21T08:38:15.1060792Z           "evidence": [
2026-06-21T08:38:15.1060873Z             {
2026-06-21T08:38:15.1061003Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1061083Z               "line": 1009
2026-06-21T08:38:15.1061167Z             },
2026-06-21T08:38:15.1061254Z             {
2026-06-21T08:38:15.1061365Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T08:38:15.1061454Z               "line": 462
2026-06-21T08:38:15.1061534Z             }
2026-06-21T08:38:15.1061610Z           ]
2026-06-21T08:38:15.1061697Z         }
2026-06-21T08:38:15.1061779Z       }
2026-06-21T08:38:15.1061858Z     },
2026-06-21T08:38:15.1061939Z     {
2026-06-21T08:38:15.1062036Z       "id": "REQ-MESH-6",
2026-06-21T08:38:15.1063252Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T08:38:15.1063351Z       "requiredStages": [
2026-06-21T08:38:15.1063437Z         "impl",
2026-06-21T08:38:15.1063523Z         "unit"
2026-06-21T08:38:15.1063610Z       ],
2026-06-21T08:38:15.1063689Z       "stages": {
2026-06-21T08:38:15.1063765Z         "doc": {
2026-06-21T08:38:15.1063860Z           "complete": false,
2026-06-21T08:38:15.1063946Z           "evidence": []
2026-06-21T08:38:15.1064030Z         },
2026-06-21T08:38:15.1064116Z         "impl": {
2026-06-21T08:38:15.1064197Z           "complete": true,
2026-06-21T08:38:15.1064283Z           "evidence": [
2026-06-21T08:38:15.1064363Z             {
2026-06-21T08:38:15.1064472Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1064559Z               "line": 4181
2026-06-21T08:38:15.1064631Z             }
2026-06-21T08:38:15.1064716Z           ]
2026-06-21T08:38:15.1064801Z         },
2026-06-21T08:38:15.1064879Z         "int": {
2026-06-21T08:38:15.1064964Z           "complete": false,
2026-06-21T08:38:15.1065049Z           "evidence": []
2026-06-21T08:38:15.1065136Z         },
2026-06-21T08:38:15.1065223Z         "unit": {
2026-06-21T08:38:15.1065308Z           "complete": true,
2026-06-21T08:38:15.1065398Z           "evidence": [
2026-06-21T08:38:15.1065480Z             {
2026-06-21T08:38:15.1065584Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1065670Z               "line": 10602
2026-06-21T08:38:15.1065755Z             },
2026-06-21T08:38:15.1065838Z             {
2026-06-21T08:38:15.1065937Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1066027Z               "line": 10629
2026-06-21T08:38:15.1066114Z             },
2026-06-21T08:38:15.1066195Z             {
2026-06-21T08:38:15.1066299Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1066385Z               "line": 10653
2026-06-21T08:38:15.1066468Z             }
2026-06-21T08:38:15.1066547Z           ]
2026-06-21T08:38:15.1066627Z         }
2026-06-21T08:38:15.1066712Z       }
2026-06-21T08:38:15.1066785Z     },
2026-06-21T08:38:15.1066865Z     {
2026-06-21T08:38:15.1067039Z       "id": "REQ-MIGRATE-1",
2026-06-21T08:38:15.1067212Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T08:38:15.1067373Z       "requiredStages": [],
2026-06-21T08:38:15.1067450Z       "stages": {
2026-06-21T08:38:15.1067532Z         "doc": {
2026-06-21T08:38:15.1067621Z           "complete": false,
2026-06-21T08:38:15.1067703Z           "evidence": []
2026-06-21T08:38:15.1067779Z         },
2026-06-21T08:38:15.1067865Z         "impl": {
2026-06-21T08:38:15.1067955Z           "complete": false,
2026-06-21T08:38:15.1068036Z           "evidence": []
2026-06-21T08:38:15.1068123Z         },
2026-06-21T08:38:15.1068199Z         "int": {
2026-06-21T08:38:15.1068289Z           "complete": false,
2026-06-21T08:38:15.1068376Z           "evidence": []
2026-06-21T08:38:15.1068456Z         },
2026-06-21T08:38:15.1068541Z         "unit": {
2026-06-21T08:38:15.1068632Z           "complete": false,
2026-06-21T08:38:15.1068715Z           "evidence": []
2026-06-21T08:38:15.1068799Z         }
2026-06-21T08:38:15.1068885Z       }
2026-06-21T08:38:15.1069025Z     },
2026-06-21T08:38:15.1069110Z     {
2026-06-21T08:38:15.1069194Z       "id": "REQ-MSG-1",
2026-06-21T08:38:15.1069620Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T08:38:15.1069722Z       "requiredStages": [
2026-06-21T08:38:15.1069802Z         "impl",
2026-06-21T08:38:15.1069882Z         "unit",
2026-06-21T08:38:15.1069954Z         "int"
2026-06-21T08:38:15.1070036Z       ],
2026-06-21T08:38:15.1070117Z       "stages": {
2026-06-21T08:38:15.1070202Z         "doc": {
2026-06-21T08:38:15.1070289Z           "complete": false,
2026-06-21T08:38:15.1070365Z           "evidence": []
2026-06-21T08:38:15.1070446Z         },
2026-06-21T08:38:15.1070526Z         "impl": {
2026-06-21T08:38:15.1070614Z           "complete": true,
2026-06-21T08:38:15.1070699Z           "evidence": [
2026-06-21T08:38:15.1070780Z             {
2026-06-21T08:38:15.1070899Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1070981Z               "line": 28
2026-06-21T08:38:15.1071061Z             },
2026-06-21T08:38:15.1071142Z             {
2026-06-21T08:38:15.1071248Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1071328Z               "line": 94
2026-06-21T08:38:15.1071408Z             },
2026-06-21T08:38:15.1071490Z             {
2026-06-21T08:38:15.1071596Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1071685Z               "line": 127
2026-06-21T08:38:15.1071767Z             },
2026-06-21T08:38:15.1071844Z             {
2026-06-21T08:38:15.1071949Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1072038Z               "line": 149
2026-06-21T08:38:15.1072118Z             },
2026-06-21T08:38:15.1072190Z             {
2026-06-21T08:38:15.1072295Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1072381Z               "line": 174
2026-06-21T08:38:15.1072461Z             },
2026-06-21T08:38:15.1072543Z             {
2026-06-21T08:38:15.1072658Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T08:38:15.1072747Z               "line": 18
2026-06-21T08:38:15.1072819Z             },
2026-06-21T08:38:15.1072906Z             {
2026-06-21T08:38:15.1073011Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.1073100Z               "line": 13
2026-06-21T08:38:15.1073178Z             },
2026-06-21T08:38:15.1073263Z             {
2026-06-21T08:38:15.1073368Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.1073449Z               "line": 62
2026-06-21T08:38:15.1073531Z             },
2026-06-21T08:38:15.1073611Z             {
2026-06-21T08:38:15.1073715Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1073803Z               "line": 13
2026-06-21T08:38:15.1073883Z             }
2026-06-21T08:38:15.1074069Z           ]
2026-06-21T08:38:15.1074151Z         },
2026-06-21T08:38:15.1074227Z         "int": {
2026-06-21T08:38:15.1074410Z           "complete": true,
2026-06-21T08:38:15.1074501Z           "evidence": [
2026-06-21T08:38:15.1074581Z             {
2026-06-21T08:38:15.1074718Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T08:38:15.1074804Z               "line": 9
2026-06-21T08:38:15.1074887Z             },
2026-06-21T08:38:15.1074971Z             {
2026-06-21T08:38:15.1075095Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T08:38:15.1075186Z               "line": 56
2026-06-21T08:38:15.1075262Z             },
2026-06-21T08:38:15.1075348Z             {
2026-06-21T08:38:15.1075482Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T08:38:15.1075572Z               "line": 113
2026-06-21T08:38:15.1075657Z             }
2026-06-21T08:38:15.1075730Z           ]
2026-06-21T08:38:15.1075811Z         },
2026-06-21T08:38:15.1075897Z         "unit": {
2026-06-21T08:38:15.1075996Z           "complete": true,
2026-06-21T08:38:15.1076097Z           "evidence": [
2026-06-21T08:38:15.1076182Z             {
2026-06-21T08:38:15.1076297Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1076384Z               "line": 203
2026-06-21T08:38:15.1076464Z             },
2026-06-21T08:38:15.1076535Z             {
2026-06-21T08:38:15.1076645Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1076737Z               "line": 232
2026-06-21T08:38:15.1076807Z             },
2026-06-21T08:38:15.1076893Z             {
2026-06-21T08:38:15.1076999Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1077094Z               "line": 277
2026-06-21T08:38:15.1077169Z             },
2026-06-21T08:38:15.1077254Z             {
2026-06-21T08:38:15.1077359Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1077439Z               "line": 300
2026-06-21T08:38:15.1077528Z             },
2026-06-21T08:38:15.1077599Z             {
2026-06-21T08:38:15.1077710Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T08:38:15.1077800Z               "line": 325
2026-06-21T08:38:15.1077886Z             },
2026-06-21T08:38:15.1077967Z             {
2026-06-21T08:38:15.1078072Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T08:38:15.1078162Z               "line": 204
2026-06-21T08:38:15.1078243Z             },
2026-06-21T08:38:15.1078326Z             {
2026-06-21T08:38:15.1078449Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T08:38:15.1078529Z               "line": 237
2026-06-21T08:38:15.1078621Z             },
2026-06-21T08:38:15.1078701Z             {
2026-06-21T08:38:15.1078816Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T08:38:15.1078907Z               "line": 251
2026-06-21T08:38:15.1079049Z             },
2026-06-21T08:38:15.1079130Z             {
2026-06-21T08:38:15.1079241Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T08:38:15.1079331Z               "line": 263
2026-06-21T08:38:15.1079416Z             },
2026-06-21T08:38:15.1079498Z             {
2026-06-21T08:38:15.1079609Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.1079698Z               "line": 162
2026-06-21T08:38:15.1079778Z             },
2026-06-21T08:38:15.1079859Z             {
2026-06-21T08:38:15.1079968Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T08:38:15.1080047Z               "line": 242
2026-06-21T08:38:15.1080132Z             },
2026-06-21T08:38:15.1080214Z             {
2026-06-21T08:38:15.1080320Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1080419Z               "line": 134
2026-06-21T08:38:15.1080496Z             },
2026-06-21T08:38:15.1080582Z             {
2026-06-21T08:38:15.1080673Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1080767Z               "line": 153
2026-06-21T08:38:15.1080844Z             }
2026-06-21T08:38:15.1081030Z           ]
2026-06-21T08:38:15.1081115Z         }
2026-06-21T08:38:15.1081188Z       }
2026-06-21T08:38:15.1081354Z     },
2026-06-21T08:38:15.1081435Z     {
2026-06-21T08:38:15.1081522Z       "id": "REQ-MSG-2",
2026-06-21T08:38:15.1081784Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T08:38:15.1081884Z       "requiredStages": [
2026-06-21T08:38:15.1081964Z         "impl",
2026-06-21T08:38:15.1082045Z         "unit"
2026-06-21T08:38:15.1082132Z       ],
2026-06-21T08:38:15.1082217Z       "stages": {
2026-06-21T08:38:15.1082298Z         "doc": {
2026-06-21T08:38:15.1082384Z           "complete": false,
2026-06-21T08:38:15.1082481Z           "evidence": []
2026-06-21T08:38:15.1082560Z         },
2026-06-21T08:38:15.1082640Z         "impl": {
2026-06-21T08:38:15.1082745Z           "complete": true,
2026-06-21T08:38:15.1082832Z           "evidence": [
2026-06-21T08:38:15.1082917Z             {
2026-06-21T08:38:15.1083021Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1083108Z               "line": 11
2026-06-21T08:38:15.1083194Z             },
2026-06-21T08:38:15.1083279Z             {
2026-06-21T08:38:15.1083384Z               "path": "crates/spt/src/main.rs",
2026-06-21T08:38:15.1083471Z               "line": 8
2026-06-21T08:38:15.1083547Z             }
2026-06-21T08:38:15.1083627Z           ]
2026-06-21T08:38:15.1083708Z         },
2026-06-21T08:38:15.1083799Z         "int": {
2026-06-21T08:38:15.1083890Z           "complete": false,
2026-06-21T08:38:15.1083975Z           "evidence": []
2026-06-21T08:38:15.1084062Z         },
2026-06-21T08:38:15.1084143Z         "unit": {
2026-06-21T08:38:15.1084224Z           "complete": true,
2026-06-21T08:38:15.1084309Z           "evidence": [
2026-06-21T08:38:15.1084382Z             {
2026-06-21T08:38:15.1084486Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1084586Z               "line": 7717
2026-06-21T08:38:15.1084667Z             },
2026-06-21T08:38:15.1084754Z             {
2026-06-21T08:38:15.1084852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1084947Z               "line": 7759
2026-06-21T08:38:15.1085033Z             },
2026-06-21T08:38:15.1085104Z             {
2026-06-21T08:38:15.1085212Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1085292Z               "line": 7808
2026-06-21T08:38:15.1085379Z             },
2026-06-21T08:38:15.1085461Z             {
2026-06-21T08:38:15.1085555Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1085646Z               "line": 7831
2026-06-21T08:38:15.1085727Z             },
2026-06-21T08:38:15.1085813Z             {
2026-06-21T08:38:15.1085912Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1086004Z               "line": 9807
2026-06-21T08:38:15.1086089Z             },
2026-06-21T08:38:15.1086170Z             {
2026-06-21T08:38:15.1086271Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1086362Z               "line": 9816
2026-06-21T08:38:15.1086443Z             },
2026-06-21T08:38:15.1086518Z             {
2026-06-21T08:38:15.1086629Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1086719Z               "line": 9830
2026-06-21T08:38:15.1086800Z             }
2026-06-21T08:38:15.1086885Z           ]
2026-06-21T08:38:15.1086963Z         }
2026-06-21T08:38:15.1087052Z       }
2026-06-21T08:38:15.1087124Z     },
2026-06-21T08:38:15.1087205Z     {
2026-06-21T08:38:15.1087287Z       "id": "REQ-MSG-3",
2026-06-21T08:38:15.1087668Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T08:38:15.1087767Z       "requiredStages": [
2026-06-21T08:38:15.1087847Z         "impl",
2026-06-21T08:38:15.1087933Z         "unit",
2026-06-21T08:38:15.1088013Z         "int"
2026-06-21T08:38:15.1088102Z       ],
2026-06-21T08:38:15.1088184Z       "stages": {
2026-06-21T08:38:15.1088347Z         "doc": {
2026-06-21T08:38:15.1088436Z           "complete": false,
2026-06-21T08:38:15.1088523Z           "evidence": []
2026-06-21T08:38:15.1088657Z         },
2026-06-21T08:38:15.1088741Z         "impl": {
2026-06-21T08:38:15.1088833Z           "complete": true,
2026-06-21T08:38:15.1088923Z           "evidence": [
2026-06-21T08:38:15.1089094Z             {
2026-06-21T08:38:15.1089215Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T08:38:15.1089295Z               "line": 19
2026-06-21T08:38:15.1089380Z             },
2026-06-21T08:38:15.1089457Z             {
2026-06-21T08:38:15.1089576Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1089662Z               "line": 21
2026-06-21T08:38:15.1089739Z             },
2026-06-21T08:38:15.1089825Z             {
2026-06-21T08:38:15.1089929Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1090015Z               "line": 48
2026-06-21T08:38:15.1090087Z             },
2026-06-21T08:38:15.1090174Z             {
2026-06-21T08:38:15.1090286Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1090366Z               "line": 174
2026-06-21T08:38:15.1090452Z             }
2026-06-21T08:38:15.1090533Z           ]
2026-06-21T08:38:15.1090612Z         },
2026-06-21T08:38:15.1090702Z         "int": {
2026-06-21T08:38:15.1090799Z           "complete": true,
2026-06-21T08:38:15.1090885Z           "evidence": [
2026-06-21T08:38:15.1090960Z             {
2026-06-21T08:38:15.1091094Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T08:38:15.1091185Z               "line": 10
2026-06-21T08:38:15.1091270Z             },
2026-06-21T08:38:15.1091341Z             {
2026-06-21T08:38:15.1091476Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T08:38:15.1091557Z               "line": 56
2026-06-21T08:38:15.1091637Z             }
2026-06-21T08:38:15.1091719Z           ]
2026-06-21T08:38:15.1091804Z         },
2026-06-21T08:38:15.1091890Z         "unit": {
2026-06-21T08:38:15.1091976Z           "complete": true,
2026-06-21T08:38:15.1092073Z           "evidence": [
2026-06-21T08:38:15.1092153Z             {
2026-06-21T08:38:15.1092257Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1092344Z               "line": 228
2026-06-21T08:38:15.1092425Z             },
2026-06-21T08:38:15.1092510Z             {
2026-06-21T08:38:15.1092615Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1092697Z               "line": 247
2026-06-21T08:38:15.1092777Z             },
2026-06-21T08:38:15.1092858Z             {
2026-06-21T08:38:15.1092969Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1093050Z               "line": 270
2026-06-21T08:38:15.1093134Z             }
2026-06-21T08:38:15.1093215Z           ]
2026-06-21T08:38:15.1093296Z         }
2026-06-21T08:38:15.1093377Z       }
2026-06-21T08:38:15.1093463Z     },
2026-06-21T08:38:15.1093548Z     {
2026-06-21T08:38:15.1093634Z       "id": "REQ-MSG-4",
2026-06-21T08:38:15.1094440Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T08:38:15.1094535Z       "requiredStages": [
2026-06-21T08:38:15.1094623Z         "impl",
2026-06-21T08:38:15.1094703Z         "unit",
2026-06-21T08:38:15.1094789Z         "int"
2026-06-21T08:38:15.1094874Z       ],
2026-06-21T08:38:15.1094956Z       "stages": {
2026-06-21T08:38:15.1095041Z         "doc": {
2026-06-21T08:38:15.1095127Z           "complete": false,
2026-06-21T08:38:15.1095213Z           "evidence": []
2026-06-21T08:38:15.1095300Z         },
2026-06-21T08:38:15.1095384Z         "impl": {
2026-06-21T08:38:15.1095469Z           "complete": true,
2026-06-21T08:38:15.1095555Z           "evidence": [
2026-06-21T08:38:15.1095645Z             {
2026-06-21T08:38:15.1095753Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1095954Z               "line": 19
2026-06-21T08:38:15.1096134Z             },
2026-06-21T08:38:15.1096216Z             {
2026-06-21T08:38:15.1096325Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1096411Z               "line": 46
2026-06-21T08:38:15.1096496Z             },
2026-06-21T08:38:15.1096579Z             {
2026-06-21T08:38:15.1096692Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1096782Z               "line": 532
2026-06-21T08:38:15.1096865Z             },
2026-06-21T08:38:15.1096950Z             {
2026-06-21T08:38:15.1097054Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1097136Z               "line": 3110
2026-06-21T08:38:15.1097222Z             }
2026-06-21T08:38:15.1097307Z           ]
2026-06-21T08:38:15.1097397Z         },
2026-06-21T08:38:15.1097480Z         "int": {
2026-06-21T08:38:15.1097566Z           "complete": true,
2026-06-21T08:38:15.1097650Z           "evidence": [
2026-06-21T08:38:15.1097731Z             {
2026-06-21T08:38:15.1097852Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T08:38:15.1097941Z               "line": 98
2026-06-21T08:38:15.1098027Z             },
2026-06-21T08:38:15.1098109Z             {
2026-06-21T08:38:15.1098228Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T08:38:15.1098312Z               "line": 128
2026-06-21T08:38:15.1098398Z             }
2026-06-21T08:38:15.1098484Z           ]
2026-06-21T08:38:15.1098569Z         },
2026-06-21T08:38:15.1098648Z         "unit": {
2026-06-21T08:38:15.1098734Z           "complete": true,
2026-06-21T08:38:15.1098826Z           "evidence": [
2026-06-21T08:38:15.1098907Z             {
2026-06-21T08:38:15.1099092Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1099187Z               "line": 68
2026-06-21T08:38:15.1099259Z             },
2026-06-21T08:38:15.1099344Z             {
2026-06-21T08:38:15.1099441Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1099541Z               "line": 79
2026-06-21T08:38:15.1099621Z             },
2026-06-21T08:38:15.1099707Z             {
2026-06-21T08:38:15.1099822Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1099898Z               "line": 90
2026-06-21T08:38:15.1099979Z             },
2026-06-21T08:38:15.1100061Z             {
2026-06-21T08:38:15.1100174Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1100255Z               "line": 151
2026-06-21T08:38:15.1100337Z             }
2026-06-21T08:38:15.1100424Z           ]
2026-06-21T08:38:15.1100503Z         }
2026-06-21T08:38:15.1100584Z       }
2026-06-21T08:38:15.1100662Z     },
2026-06-21T08:38:15.1100734Z     {
2026-06-21T08:38:15.1100818Z       "id": "REQ-MSG-5",
2026-06-21T08:38:15.1101520Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T08:38:15.1101625Z       "requiredStages": [
2026-06-21T08:38:15.1101702Z         "doc",
2026-06-21T08:38:15.1101784Z         "impl",
2026-06-21T08:38:15.1101868Z         "unit"
2026-06-21T08:38:15.1101955Z       ],
2026-06-21T08:38:15.1102036Z       "stages": {
2026-06-21T08:38:15.1102117Z         "doc": {
2026-06-21T08:38:15.1102202Z           "complete": true,
2026-06-21T08:38:15.1102284Z           "evidence": [
2026-06-21T08:38:15.1102365Z             {
2026-06-21T08:38:15.1102455Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1102545Z               "line": 231
2026-06-21T08:38:15.1102633Z             }
2026-06-21T08:38:15.1102717Z           ]
2026-06-21T08:38:15.1102798Z         },
2026-06-21T08:38:15.1102884Z         "impl": {
2026-06-21T08:38:15.1102981Z           "complete": true,
2026-06-21T08:38:15.1103070Z           "evidence": [
2026-06-21T08:38:15.1103257Z             {
2026-06-21T08:38:15.1103361Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.1103534Z               "line": 60
2026-06-21T08:38:15.1103615Z             },
2026-06-21T08:38:15.1103699Z             {
2026-06-21T08:38:15.1103812Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1103904Z               "line": 126
2026-06-21T08:38:15.1103991Z             },
2026-06-21T08:38:15.1104075Z             {
2026-06-21T08:38:15.1104180Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1104276Z               "line": 135
2026-06-21T08:38:15.1104357Z             },
2026-06-21T08:38:15.1104438Z             {
2026-06-21T08:38:15.1104544Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1104629Z               "line": 149
2026-06-21T08:38:15.1104714Z             },
2026-06-21T08:38:15.1104785Z             {
2026-06-21T08:38:15.1104891Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1104981Z               "line": 178
2026-06-21T08:38:15.1105067Z             },
2026-06-21T08:38:15.1105149Z             {
2026-06-21T08:38:15.1105249Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1105329Z               "line": 2802
2026-06-21T08:38:15.1105410Z             }
2026-06-21T08:38:15.1105493Z           ]
2026-06-21T08:38:15.1105573Z         },
2026-06-21T08:38:15.1105663Z         "int": {
2026-06-21T08:38:15.1105749Z           "complete": true,
2026-06-21T08:38:15.1105841Z           "evidence": [
2026-06-21T08:38:15.1105925Z             {
2026-06-21T08:38:15.1106043Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T08:38:15.1106134Z               "line": 19
2026-06-21T08:38:15.1106205Z             }
2026-06-21T08:38:15.1106289Z           ]
2026-06-21T08:38:15.1106360Z         },
2026-06-21T08:38:15.1106451Z         "unit": {
2026-06-21T08:38:15.1106533Z           "complete": true,
2026-06-21T08:38:15.1106614Z           "evidence": [
2026-06-21T08:38:15.1106708Z             {
2026-06-21T08:38:15.1109757Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.1109866Z               "line": 192
2026-06-21T08:38:15.1109953Z             },
2026-06-21T08:38:15.1110039Z             {
2026-06-21T08:38:15.1110172Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T08:38:15.1110253Z               "line": 154
2026-06-21T08:38:15.1110330Z             },
2026-06-21T08:38:15.1110415Z             {
2026-06-21T08:38:15.1110534Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1110616Z               "line": 122
2026-06-21T08:38:15.1110697Z             },
2026-06-21T08:38:15.1110772Z             {
2026-06-21T08:38:15.1110883Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1110969Z               "line": 452
2026-06-21T08:38:15.1111045Z             },
2026-06-21T08:38:15.1111126Z             {
2026-06-21T08:38:15.1111237Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1111322Z               "line": 501
2026-06-21T08:38:15.1111392Z             },
2026-06-21T08:38:15.1111473Z             {
2026-06-21T08:38:15.1111582Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1111663Z               "line": 517
2026-06-21T08:38:15.1111742Z             },
2026-06-21T08:38:15.1111823Z             {
2026-06-21T08:38:15.1111928Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1112015Z               "line": 536
2026-06-21T08:38:15.1112094Z             },
2026-06-21T08:38:15.1112176Z             {
2026-06-21T08:38:15.1112281Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1112363Z               "line": 7660
2026-06-21T08:38:15.1112443Z             }
2026-06-21T08:38:15.1112525Z           ]
2026-06-21T08:38:15.1112610Z         }
2026-06-21T08:38:15.1112687Z       }
2026-06-21T08:38:15.1112757Z     },
2026-06-21T08:38:15.1112840Z     {
2026-06-21T08:38:15.1112930Z       "id": "REQ-MSG-6",
2026-06-21T08:38:15.1114640Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T08:38:15.1114855Z       "requiredStages": [
2026-06-21T08:38:15.1114936Z         "doc",
2026-06-21T08:38:15.1115021Z         "impl",
2026-06-21T08:38:15.1115104Z         "unit"
2026-06-21T08:38:15.1115189Z       ],
2026-06-21T08:38:15.1115260Z       "stages": {
2026-06-21T08:38:15.1115341Z         "doc": {
2026-06-21T08:38:15.1115428Z           "complete": true,
2026-06-21T08:38:15.1115518Z           "evidence": [
2026-06-21T08:38:15.1115598Z             {
2026-06-21T08:38:15.1115699Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1115785Z               "line": 234
2026-06-21T08:38:15.1115870Z             }
2026-06-21T08:38:15.1115956Z           ]
2026-06-21T08:38:15.1116033Z         },
2026-06-21T08:38:15.1116124Z         "impl": {
2026-06-21T08:38:15.1116213Z           "complete": true,
2026-06-21T08:38:15.1116300Z           "evidence": [
2026-06-21T08:38:15.1116382Z             {
2026-06-21T08:38:15.1116514Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1116599Z               "line": 177
2026-06-21T08:38:15.1116675Z             },
2026-06-21T08:38:15.1116747Z             {
2026-06-21T08:38:15.1116864Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1116954Z               "line": 428
2026-06-21T08:38:15.1117036Z             },
2026-06-21T08:38:15.1117117Z             {
2026-06-21T08:38:15.1117244Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1117321Z               "line": 451
2026-06-21T08:38:15.1117408Z             },
2026-06-21T08:38:15.1117488Z             {
2026-06-21T08:38:15.1117597Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.1117684Z               "line": 89
2026-06-21T08:38:15.1117756Z             },
2026-06-21T08:38:15.1117841Z             {
2026-06-21T08:38:15.1117961Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1118042Z               "line": 155
2026-06-21T08:38:15.1118123Z             }
2026-06-21T08:38:15.1118203Z           ]
2026-06-21T08:38:15.1118285Z         },
2026-06-21T08:38:15.1118366Z         "int": {
2026-06-21T08:38:15.1118461Z           "complete": false,
2026-06-21T08:38:15.1118541Z           "evidence": []
2026-06-21T08:38:15.1118629Z         },
2026-06-21T08:38:15.1118709Z         "unit": {
2026-06-21T08:38:15.1118800Z           "complete": true,
2026-06-21T08:38:15.1118886Z           "evidence": [
2026-06-21T08:38:15.1119029Z             {
2026-06-21T08:38:15.1119153Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1119234Z               "line": 1746
2026-06-21T08:38:15.1119325Z             },
2026-06-21T08:38:15.1119400Z             {
2026-06-21T08:38:15.1119504Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.1119590Z               "line": 219
2026-06-21T08:38:15.1119670Z             }
2026-06-21T08:38:15.1119750Z           ]
2026-06-21T08:38:15.1119830Z         }
2026-06-21T08:38:15.1119908Z       }
2026-06-21T08:38:15.1119984Z     },
2026-06-21T08:38:15.1120065Z     {
2026-06-21T08:38:15.1120165Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T08:38:15.1123814Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T08:38:15.1124101Z       "requiredStages": [
2026-06-21T08:38:15.1124185Z         "doc",
2026-06-21T08:38:15.1124271Z         "impl",
2026-06-21T08:38:15.1124354Z         "unit",
2026-06-21T08:38:15.1124440Z         "int"
2026-06-21T08:38:15.1124519Z       ],
2026-06-21T08:38:15.1124610Z       "stages": {
2026-06-21T08:38:15.1124688Z         "doc": {
2026-06-21T08:38:15.1124769Z           "complete": true,
2026-06-21T08:38:15.1124852Z           "evidence": [
2026-06-21T08:38:15.1124938Z             {
2026-06-21T08:38:15.1125153Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T08:38:15.1125243Z               "line": 47
2026-06-21T08:38:15.1125325Z             }
2026-06-21T08:38:15.1125396Z           ]
2026-06-21T08:38:15.1125473Z         },
2026-06-21T08:38:15.1125558Z         "impl": {
2026-06-21T08:38:15.1125644Z           "complete": true,
2026-06-21T08:38:15.1125725Z           "evidence": [
2026-06-21T08:38:15.1125806Z             {
2026-06-21T08:38:15.1125920Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1126007Z               "line": 20
2026-06-21T08:38:15.1126087Z             },
2026-06-21T08:38:15.1126172Z             {
2026-06-21T08:38:15.1126279Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1126374Z               "line": 33
2026-06-21T08:38:15.1126455Z             },
2026-06-21T08:38:15.1126540Z             {
2026-06-21T08:38:15.1126642Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1126726Z               "line": 47
2026-06-21T08:38:15.1126816Z             },
2026-06-21T08:38:15.1126893Z             {
2026-06-21T08:38:15.1126990Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1127074Z               "line": 58
2026-06-21T08:38:15.1127163Z             },
2026-06-21T08:38:15.1127240Z             {
2026-06-21T08:38:15.1127349Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1127433Z               "line": 14
2026-06-21T08:38:15.1127514Z             },
2026-06-21T08:38:15.1127596Z             {
2026-06-21T08:38:15.1127696Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1127781Z               "line": 27
2026-06-21T08:38:15.1127867Z             },
2026-06-21T08:38:15.1127949Z             {
2026-06-21T08:38:15.1128058Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1128138Z               "line": 40
2026-06-21T08:38:15.1128221Z             },
2026-06-21T08:38:15.1128297Z             {
2026-06-21T08:38:15.1128401Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.1128487Z               "line": 92
2026-06-21T08:38:15.1128569Z             },
2026-06-21T08:38:15.1128640Z             {
2026-06-21T08:38:15.1128759Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1128845Z               "line": 143
2026-06-21T08:38:15.1128926Z             },
2026-06-21T08:38:15.1129097Z             {
2026-06-21T08:38:15.1129213Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1129302Z               "line": 216
2026-06-21T08:38:15.1129388Z             },
2026-06-21T08:38:15.1129565Z             {
2026-06-21T08:38:15.1129674Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1129852Z               "line": 533
2026-06-21T08:38:15.1129932Z             },
2026-06-21T08:38:15.1130012Z             {
2026-06-21T08:38:15.1130116Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T08:38:15.1130197Z               "line": 78
2026-06-21T08:38:15.1130277Z             },
2026-06-21T08:38:15.1130362Z             {
2026-06-21T08:38:15.1130463Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1130549Z               "line": 3111
2026-06-21T08:38:15.1130630Z             }
2026-06-21T08:38:15.1130710Z           ]
2026-06-21T08:38:15.1130792Z         },
2026-06-21T08:38:15.1130873Z         "int": {
2026-06-21T08:38:15.1130963Z           "complete": true,
2026-06-21T08:38:15.1131044Z           "evidence": [
2026-06-21T08:38:15.1131126Z             {
2026-06-21T08:38:15.1131254Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T08:38:15.1131344Z               "line": 15
2026-06-21T08:38:15.1131427Z             }
2026-06-21T08:38:15.1131512Z           ]
2026-06-21T08:38:15.1131593Z         },
2026-06-21T08:38:15.1131669Z         "unit": {
2026-06-21T08:38:15.1131751Z           "complete": true,
2026-06-21T08:38:15.1131845Z           "evidence": [
2026-06-21T08:38:15.1131912Z             {
2026-06-21T08:38:15.1132027Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1132118Z               "line": 102
2026-06-21T08:38:15.1132198Z             },
2026-06-21T08:38:15.1132275Z             {
2026-06-21T08:38:15.1132381Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T08:38:15.1132471Z               "line": 137
2026-06-21T08:38:15.1132546Z             },
2026-06-21T08:38:15.1132631Z             {
2026-06-21T08:38:15.1132731Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1132811Z               "line": 98
2026-06-21T08:38:15.1132895Z             },
2026-06-21T08:38:15.1132976Z             {
2026-06-21T08:38:15.1133083Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1133168Z               "line": 106
2026-06-21T08:38:15.1133253Z             },
2026-06-21T08:38:15.1133330Z             {
2026-06-21T08:38:15.1133435Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1133516Z               "line": 113
2026-06-21T08:38:15.1133597Z             },
2026-06-21T08:38:15.1133674Z             {
2026-06-21T08:38:15.1133773Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T08:38:15.1133859Z               "line": 122
2026-06-21T08:38:15.1133940Z             }
2026-06-21T08:38:15.1134012Z           ]
2026-06-21T08:38:15.1134097Z         }
2026-06-21T08:38:15.1134178Z       }
2026-06-21T08:38:15.1134259Z     },
2026-06-21T08:38:15.1134332Z     {
2026-06-21T08:38:15.1134451Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T08:38:15.1139401Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T08:38:15.1139706Z       "requiredStages": [
2026-06-21T08:38:15.1139792Z         "doc",
2026-06-21T08:38:15.1139876Z         "impl",
2026-06-21T08:38:15.1139963Z         "unit",
2026-06-21T08:38:15.1140040Z         "int"
2026-06-21T08:38:15.1140125Z       ],
2026-06-21T08:38:15.1140205Z       "stages": {
2026-06-21T08:38:15.1140292Z         "doc": {
2026-06-21T08:38:15.1140379Z           "complete": true,
2026-06-21T08:38:15.1140473Z           "evidence": [
2026-06-21T08:38:15.1140553Z             {
2026-06-21T08:38:15.1140701Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T08:38:15.1140795Z               "line": 277
2026-06-21T08:38:15.1140875Z             },
2026-06-21T08:38:15.1140955Z             {
2026-06-21T08:38:15.1141052Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.1141142Z               "line": 198
2026-06-21T08:38:15.1141223Z             }
2026-06-21T08:38:15.1141299Z           ]
2026-06-21T08:38:15.1141376Z         },
2026-06-21T08:38:15.1141452Z         "impl": {
2026-06-21T08:38:15.1141547Z           "complete": true,
2026-06-21T08:38:15.1141619Z           "evidence": [
2026-06-21T08:38:15.1141700Z             {
2026-06-21T08:38:15.1141824Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1141914Z               "line": 1025
2026-06-21T08:38:15.1141992Z             },
2026-06-21T08:38:15.1142072Z             {
2026-06-21T08:38:15.1142196Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1142277Z               "line": 23
2026-06-21T08:38:15.1142363Z             },
2026-06-21T08:38:15.1142448Z             {
2026-06-21T08:38:15.1142568Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1142650Z               "line": 91
2026-06-21T08:38:15.1142730Z             },
2026-06-21T08:38:15.1142806Z             {
2026-06-21T08:38:15.1142922Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1143002Z               "line": 239
2026-06-21T08:38:15.1143082Z             },
2026-06-21T08:38:15.1143158Z             {
2026-06-21T08:38:15.1143273Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1143357Z               "line": 287
2026-06-21T08:38:15.1143442Z             },
2026-06-21T08:38:15.1143522Z             {
2026-06-21T08:38:15.1143638Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1143733Z               "line": 311
2026-06-21T08:38:15.1143813Z             },
2026-06-21T08:38:15.1143895Z             {
2026-06-21T08:38:15.1144009Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1144095Z               "line": 60
2026-06-21T08:38:15.1144176Z             },
2026-06-21T08:38:15.1144248Z             {
2026-06-21T08:38:15.1144362Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1144442Z               "line": 889
2026-06-21T08:38:15.1144525Z             }
2026-06-21T08:38:15.1144605Z           ]
2026-06-21T08:38:15.1144686Z         },
2026-06-21T08:38:15.1144767Z         "int": {
2026-06-21T08:38:15.1144854Z           "complete": true,
2026-06-21T08:38:15.1144939Z           "evidence": [
2026-06-21T08:38:15.1145015Z             {
2026-06-21T08:38:15.1145154Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.1145240Z               "line": 1089
2026-06-21T08:38:15.1145329Z             },
2026-06-21T08:38:15.1145484Z             {
2026-06-21T08:38:15.1145625Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.1145803Z               "line": 1194
2026-06-21T08:38:15.1145884Z             },
2026-06-21T08:38:15.1145968Z             {
2026-06-21T08:38:15.1146101Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.1146193Z               "line": 1262
2026-06-21T08:38:15.1146274Z             },
2026-06-21T08:38:15.1146353Z             {
2026-06-21T08:38:15.1146483Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T08:38:15.1146564Z               "line": 1355
2026-06-21T08:38:15.1146640Z             }
2026-06-21T08:38:15.1146711Z           ]
2026-06-21T08:38:15.1146803Z         },
2026-06-21T08:38:15.1146888Z         "unit": {
2026-06-21T08:38:15.1146969Z           "complete": true,
2026-06-21T08:38:15.1147060Z           "evidence": [
2026-06-21T08:38:15.1147142Z             {
2026-06-21T08:38:15.1147265Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.1147355Z               "line": 270
2026-06-21T08:38:15.1147437Z             },
2026-06-21T08:38:15.1147522Z             {
2026-06-21T08:38:15.1147636Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1147724Z               "line": 350
2026-06-21T08:38:15.1147804Z             },
2026-06-21T08:38:15.1147884Z             {
2026-06-21T08:38:15.1147995Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1148081Z               "line": 381
2026-06-21T08:38:15.1148166Z             },
2026-06-21T08:38:15.1148246Z             {
2026-06-21T08:38:15.1148356Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1148437Z               "line": 411
2026-06-21T08:38:15.1148516Z             },
2026-06-21T08:38:15.1148597Z             {
2026-06-21T08:38:15.1148721Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T08:38:15.1148808Z               "line": 440
2026-06-21T08:38:15.1148882Z             },
2026-06-21T08:38:15.1149045Z             {
2026-06-21T08:38:15.1149164Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1149254Z               "line": 1181
2026-06-21T08:38:15.1149336Z             }
2026-06-21T08:38:15.1149421Z           ]
2026-06-21T08:38:15.1149498Z         }
2026-06-21T08:38:15.1149588Z       }
2026-06-21T08:38:15.1149670Z     },
2026-06-21T08:38:15.1149750Z     {
2026-06-21T08:38:15.1149845Z       "id": "REQ-NET-1",
2026-06-21T08:38:15.1150018Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T08:38:15.1150108Z       "requiredStages": [
2026-06-21T08:38:15.1150184Z         "impl",
2026-06-21T08:38:15.1150266Z         "unit",
2026-06-21T08:38:15.1150348Z         "int"
2026-06-21T08:38:15.1150427Z       ],
2026-06-21T08:38:15.1150513Z       "stages": {
2026-06-21T08:38:15.1150591Z         "doc": {
2026-06-21T08:38:15.1150681Z           "complete": false,
2026-06-21T08:38:15.1150775Z           "evidence": []
2026-06-21T08:38:15.1150852Z         },
2026-06-21T08:38:15.1150944Z         "impl": {
2026-06-21T08:38:15.1151029Z           "complete": true,
2026-06-21T08:38:15.1151113Z           "evidence": [
2026-06-21T08:38:15.1151198Z             {
2026-06-21T08:38:15.1151323Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1151411Z               "line": 54
2026-06-21T08:38:15.1151492Z             },
2026-06-21T08:38:15.1151578Z             {
2026-06-21T08:38:15.1151693Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1151778Z               "line": 594
2026-06-21T08:38:15.1151859Z             },
2026-06-21T08:38:15.1151946Z             {
2026-06-21T08:38:15.1152064Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T08:38:15.1152150Z               "line": 130
2026-06-21T08:38:15.1152237Z             },
2026-06-21T08:38:15.1152303Z             {
2026-06-21T08:38:15.1152537Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1152636Z               "line": 97
2026-06-21T08:38:15.1152808Z             },
2026-06-21T08:38:15.1152886Z             {
2026-06-21T08:38:15.1153003Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1153085Z               "line": 159
2026-06-21T08:38:15.1153167Z             },
2026-06-21T08:38:15.1153248Z             {
2026-06-21T08:38:15.1153356Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1153438Z               "line": 175
2026-06-21T08:38:15.1153520Z             },
2026-06-21T08:38:15.1153600Z             {
2026-06-21T08:38:15.1153713Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1153799Z               "line": 190
2026-06-21T08:38:15.1153884Z             },
2026-06-21T08:38:15.1153968Z             {
2026-06-21T08:38:15.1154077Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1154174Z               "line": 271
2026-06-21T08:38:15.1154251Z             },
2026-06-21T08:38:15.1154335Z             {
2026-06-21T08:38:15.1154455Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1154551Z               "line": 306
2026-06-21T08:38:15.1154631Z             },
2026-06-21T08:38:15.1154702Z             {
2026-06-21T08:38:15.1154813Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1154898Z               "line": 312
2026-06-21T08:38:15.1154979Z             },
2026-06-21T08:38:15.1155061Z             {
2026-06-21T08:38:15.1155170Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1155261Z               "line": 318
2026-06-21T08:38:15.1155346Z             },
2026-06-21T08:38:15.1155429Z             {
2026-06-21T08:38:15.1155542Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1155628Z               "line": 334
2026-06-21T08:38:15.1155704Z             },
2026-06-21T08:38:15.1155791Z             {
2026-06-21T08:38:15.1155909Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1155990Z               "line": 354
2026-06-21T08:38:15.1156077Z             },
2026-06-21T08:38:15.1156157Z             {
2026-06-21T08:38:15.1156276Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T08:38:15.1156368Z               "line": 35
2026-06-21T08:38:15.1156449Z             },
2026-06-21T08:38:15.1156528Z             {
2026-06-21T08:38:15.1156642Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T08:38:15.1156723Z               "line": 85
2026-06-21T08:38:15.1156806Z             },
2026-06-21T08:38:15.1156881Z             {
2026-06-21T08:38:15.1156990Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.1157077Z               "line": 138
2026-06-21T08:38:15.1157153Z             },
2026-06-21T08:38:15.1157228Z             {
2026-06-21T08:38:15.1157335Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1157420Z               "line": 2953
2026-06-21T08:38:15.1157501Z             },
2026-06-21T08:38:15.1157591Z             {
2026-06-21T08:38:15.1157692Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1157782Z               "line": 17
2026-06-21T08:38:15.1157853Z             }
2026-06-21T08:38:15.1157935Z           ]
2026-06-21T08:38:15.1158007Z         },
2026-06-21T08:38:15.1158097Z         "int": {
2026-06-21T08:38:15.1158187Z           "complete": true,
2026-06-21T08:38:15.1158274Z           "evidence": [
2026-06-21T08:38:15.1158360Z             {
2026-06-21T08:38:15.1158483Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1158564Z               "line": 341
2026-06-21T08:38:15.1158641Z             },
2026-06-21T08:38:15.1158721Z             {
2026-06-21T08:38:15.1158835Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1158916Z               "line": 675
2026-06-21T08:38:15.1159076Z             },
2026-06-21T08:38:15.1159252Z             {
2026-06-21T08:38:15.1159363Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1159528Z               "line": 973
2026-06-21T08:38:15.1159615Z             }
2026-06-21T08:38:15.1159696Z           ]
2026-06-21T08:38:15.1159771Z         },
2026-06-21T08:38:15.1159852Z         "unit": {
2026-06-21T08:38:15.1159935Z           "complete": true,
2026-06-21T08:38:15.1160010Z           "evidence": [
2026-06-21T08:38:15.1160091Z             {
2026-06-21T08:38:15.1160211Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1160301Z               "line": 651
2026-06-21T08:38:15.1160378Z             },
2026-06-21T08:38:15.1160453Z             {
2026-06-21T08:38:15.1160569Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1160658Z               "line": 686
2026-06-21T08:38:15.1160730Z             },
2026-06-21T08:38:15.1160816Z             {
2026-06-21T08:38:15.1160936Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1161021Z               "line": 940
2026-06-21T08:38:15.1161107Z             },
2026-06-21T08:38:15.1161189Z             {
2026-06-21T08:38:15.1161307Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T08:38:15.1161388Z               "line": 201
2026-06-21T08:38:15.1161470Z             },
2026-06-21T08:38:15.1161547Z             {
2026-06-21T08:38:15.1161659Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1161749Z               "line": 442
2026-06-21T08:38:15.1161830Z             },
2026-06-21T08:38:15.1161911Z             {
2026-06-21T08:38:15.1162028Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1162110Z               "line": 456
2026-06-21T08:38:15.1162191Z             },
2026-06-21T08:38:15.1162263Z             {
2026-06-21T08:38:15.1162381Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1162458Z               "line": 475
2026-06-21T08:38:15.1162548Z             },
2026-06-21T08:38:15.1162629Z             {
2026-06-21T08:38:15.1162744Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T08:38:15.1162840Z               "line": 120
2026-06-21T08:38:15.1162921Z             },
2026-06-21T08:38:15.1163001Z             {
2026-06-21T08:38:15.1163107Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T08:38:15.1163201Z               "line": 163
2026-06-21T08:38:15.1163282Z             },
2026-06-21T08:38:15.1163363Z             {
2026-06-21T08:38:15.1163470Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T08:38:15.1163540Z               "line": 530
2026-06-21T08:38:15.1163626Z             },
2026-06-21T08:38:15.1163703Z             {
2026-06-21T08:38:15.1163812Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1163902Z               "line": 616
2026-06-21T08:38:15.1163984Z             },
2026-06-21T08:38:15.1164071Z             {
2026-06-21T08:38:15.1164174Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1164259Z               "line": 1006
2026-06-21T08:38:15.1164340Z             }
2026-06-21T08:38:15.1164426Z           ]
2026-06-21T08:38:15.1164514Z         }
2026-06-21T08:38:15.1164595Z       }
2026-06-21T08:38:15.1164676Z     },
2026-06-21T08:38:15.1164753Z     {
2026-06-21T08:38:15.1164843Z       "id": "REQ-NET-2",
2026-06-21T08:38:15.1165020Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T08:38:15.1165115Z       "requiredStages": [
2026-06-21T08:38:15.1165200Z         "impl"
2026-06-21T08:38:15.1165277Z       ],
2026-06-21T08:38:15.1165355Z       "stages": {
2026-06-21T08:38:15.1165435Z         "doc": {
2026-06-21T08:38:15.1165529Z           "complete": false,
2026-06-21T08:38:15.1165606Z           "evidence": []
2026-06-21T08:38:15.1165679Z         },
2026-06-21T08:38:15.1165768Z         "impl": {
2026-06-21T08:38:15.1165844Z           "complete": true,
2026-06-21T08:38:15.1165940Z           "evidence": [
2026-06-21T08:38:15.1166097Z             {
2026-06-21T08:38:15.1166216Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:15.1166379Z               "line": 57
2026-06-21T08:38:15.1166464Z             },
2026-06-21T08:38:15.1166550Z             {
2026-06-21T08:38:15.1166666Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1166760Z               "line": 71
2026-06-21T08:38:15.1166841Z             },
2026-06-21T08:38:15.1166923Z             {
2026-06-21T08:38:15.1167032Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1167112Z               "line": 81
2026-06-21T08:38:15.1167197Z             },
2026-06-21T08:38:15.1167279Z             {
2026-06-21T08:38:15.1167394Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1167474Z               "line": 159
2026-06-21T08:38:15.1167555Z             },
2026-06-21T08:38:15.1167628Z             {
2026-06-21T08:38:15.1167751Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1167846Z               "line": 175
2026-06-21T08:38:15.1167923Z             },
2026-06-21T08:38:15.1168009Z             {
2026-06-21T08:38:15.1168127Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T08:38:15.1168219Z               "line": 190
2026-06-21T08:38:15.1168304Z             }
2026-06-21T08:38:15.1168381Z           ]
2026-06-21T08:38:15.1168461Z         },
2026-06-21T08:38:15.1168544Z         "int": {
2026-06-21T08:38:15.1168643Z           "complete": false,
2026-06-21T08:38:15.1168719Z           "evidence": []
2026-06-21T08:38:15.1168805Z         },
2026-06-21T08:38:15.1168882Z         "unit": {
2026-06-21T08:38:15.1169048Z           "complete": true,
2026-06-21T08:38:15.1169139Z           "evidence": [
2026-06-21T08:38:15.1169216Z             {
2026-06-21T08:38:15.1169338Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:15.1169419Z               "line": 402
2026-06-21T08:38:15.1169500Z             }
2026-06-21T08:38:15.1169580Z           ]
2026-06-21T08:38:15.1169669Z         }
2026-06-21T08:38:15.1169755Z       }
2026-06-21T08:38:15.1169827Z     },
2026-06-21T08:38:15.1169913Z     {
2026-06-21T08:38:15.1169989Z       "id": "REQ-NET-3",
2026-06-21T08:38:15.1170165Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T08:38:15.1170246Z       "requiredStages": [
2026-06-21T08:38:15.1170336Z         "impl",
2026-06-21T08:38:15.1170417Z         "unit"
2026-06-21T08:38:15.1170500Z       ],
2026-06-21T08:38:15.1170580Z       "stages": {
2026-06-21T08:38:15.1170660Z         "doc": {
2026-06-21T08:38:15.1170757Z           "complete": false,
2026-06-21T08:38:15.1170847Z           "evidence": []
2026-06-21T08:38:15.1170924Z         },
2026-06-21T08:38:15.1171018Z         "impl": {
2026-06-21T08:38:15.1171105Z           "complete": true,
2026-06-21T08:38:15.1171190Z           "evidence": [
2026-06-21T08:38:15.1171271Z             {
2026-06-21T08:38:15.1171391Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.1171468Z               "line": 39
2026-06-21T08:38:15.1171547Z             },
2026-06-21T08:38:15.1171633Z             {
2026-06-21T08:38:15.1171740Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.1171834Z               "line": 182
2026-06-21T08:38:15.1171915Z             },
2026-06-21T08:38:15.1171997Z             {
2026-06-21T08:38:15.1172107Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T08:38:15.1172191Z               "line": 333
2026-06-21T08:38:15.1172276Z             },
2026-06-21T08:38:15.1172348Z             {
2026-06-21T08:38:15.1172466Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T08:38:15.1172546Z               "line": 36
2026-06-21T08:38:15.1172627Z             },
2026-06-21T08:38:15.1172703Z             {
2026-06-21T08:38:15.1172833Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1172917Z               "line": 158
2026-06-21T08:38:15.1172999Z             },
2026-06-21T08:38:15.1173208Z             {
2026-06-21T08:38:15.1173333Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1173514Z               "line": 238
2026-06-21T08:38:15.1173595Z             },
2026-06-21T08:38:15.1173677Z             {
2026-06-21T08:38:15.1173795Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1173876Z               "line": 259
2026-06-21T08:38:15.1173963Z             },
2026-06-21T08:38:15.1174039Z             {
2026-06-21T08:38:15.1174157Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1174243Z               "line": 317
2026-06-21T08:38:15.1174321Z             },
2026-06-21T08:38:15.1174401Z             {
2026-06-21T08:38:15.1174515Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1174597Z               "line": 336
2026-06-21T08:38:15.1174678Z             },
2026-06-21T08:38:15.1174757Z             {
2026-06-21T08:38:15.1174871Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1174953Z               "line": 374
2026-06-21T08:38:15.1175037Z             },
2026-06-21T08:38:15.1175122Z             {
2026-06-21T08:38:15.1175237Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1175323Z               "line": 419
2026-06-21T08:38:15.1175403Z             },
2026-06-21T08:38:15.1175479Z             {
2026-06-21T08:38:15.1175595Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1175680Z               "line": 432
2026-06-21T08:38:15.1175751Z             },
2026-06-21T08:38:15.1175837Z             {
2026-06-21T08:38:15.1175952Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:15.1176029Z               "line": 29
2026-06-21T08:38:15.1176113Z             },
2026-06-21T08:38:15.1176191Z             {
2026-06-21T08:38:15.1176309Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:15.1176390Z               "line": 72
2026-06-21T08:38:15.1176471Z             },
2026-06-21T08:38:15.1176554Z             {
2026-06-21T08:38:15.1176672Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:15.1176767Z               "line": 123
2026-06-21T08:38:15.1176844Z             }
2026-06-21T08:38:15.1176930Z           ]
2026-06-21T08:38:15.1177010Z         },
2026-06-21T08:38:15.1177096Z         "int": {
2026-06-21T08:38:15.1177178Z           "complete": false,
2026-06-21T08:38:15.1177268Z           "evidence": []
2026-06-21T08:38:15.1177344Z         },
2026-06-21T08:38:15.1177425Z         "unit": {
2026-06-21T08:38:15.1177522Z           "complete": true,
2026-06-21T08:38:15.1177606Z           "evidence": [
2026-06-21T08:38:15.1177687Z             {
2026-06-21T08:38:15.1177786Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T08:38:15.1177878Z               "line": 223
2026-06-21T08:38:15.1177968Z             },
2026-06-21T08:38:15.1178048Z             {
2026-06-21T08:38:15.1178164Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T08:38:15.1178254Z               "line": 351
2026-06-21T08:38:15.1178344Z             },
2026-06-21T08:38:15.1178426Z             {
2026-06-21T08:38:15.1178545Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T08:38:15.1178626Z               "line": 504
2026-06-21T08:38:15.1178711Z             },
2026-06-21T08:38:15.1178794Z             {
2026-06-21T08:38:15.1178898Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T08:38:15.1179055Z               "line": 93
2026-06-21T08:38:15.1179132Z             },
2026-06-21T08:38:15.1179222Z             {
2026-06-21T08:38:15.1179336Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T08:38:15.1179419Z               "line": 142
2026-06-21T08:38:15.1179494Z             },
2026-06-21T08:38:15.1179579Z             {
2026-06-21T08:38:15.1182817Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:15.1182932Z               "line": 315
2026-06-21T08:38:15.1183017Z             },
2026-06-21T08:38:15.1183244Z             {
2026-06-21T08:38:15.1183374Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:15.1183544Z               "line": 355
2026-06-21T08:38:15.1183631Z             },
2026-06-21T08:38:15.1183712Z             {
2026-06-21T08:38:15.1183835Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T08:38:15.1183917Z               "line": 494
2026-06-21T08:38:15.1183998Z             }
2026-06-21T08:38:15.1184079Z           ]
2026-06-21T08:38:15.1184160Z         }
2026-06-21T08:38:15.1184237Z       }
2026-06-21T08:38:15.1184322Z     },
2026-06-21T08:38:15.1184398Z     {
2026-06-21T08:38:15.1184498Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T08:38:15.1184722Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T08:38:15.1184818Z       "requiredStages": [
2026-06-21T08:38:15.1184905Z         "impl",
2026-06-21T08:38:15.1184975Z         "unit"
2026-06-21T08:38:15.1185061Z       ],
2026-06-21T08:38:15.1185138Z       "stages": {
2026-06-21T08:38:15.1185210Z         "doc": {
2026-06-21T08:38:15.1185304Z           "complete": false,
2026-06-21T08:38:15.1185394Z           "evidence": []
2026-06-21T08:38:15.1185475Z         },
2026-06-21T08:38:15.1185561Z         "impl": {
2026-06-21T08:38:15.1185644Z           "complete": true,
2026-06-21T08:38:15.1185730Z           "evidence": [
2026-06-21T08:38:15.1185816Z             {
2026-06-21T08:38:15.1185945Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1186030Z               "line": 60
2026-06-21T08:38:15.1186111Z             },
2026-06-21T08:38:15.1186188Z             {
2026-06-21T08:38:15.1186311Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1186397Z               "line": 68
2026-06-21T08:38:15.1186465Z             },
2026-06-21T08:38:15.1186550Z             {
2026-06-21T08:38:15.1186659Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1186741Z               "line": 86
2026-06-21T08:38:15.1186823Z             },
2026-06-21T08:38:15.1186907Z             {
2026-06-21T08:38:15.1187022Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1187099Z               "line": 120
2026-06-21T08:38:15.1187184Z             },
2026-06-21T08:38:15.1187265Z             {
2026-06-21T08:38:15.1187370Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1187452Z               "line": 127
2026-06-21T08:38:15.1187537Z             },
2026-06-21T08:38:15.1187618Z             {
2026-06-21T08:38:15.1187724Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1187814Z               "line": 143
2026-06-21T08:38:15.1187889Z             },
2026-06-21T08:38:15.1187966Z             {
2026-06-21T08:38:15.1188072Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T08:38:15.1188157Z               "line": 16
2026-06-21T08:38:15.1188232Z             }
2026-06-21T08:38:15.1188317Z           ]
2026-06-21T08:38:15.1188399Z         },
2026-06-21T08:38:15.1188486Z         "int": {
2026-06-21T08:38:15.1188580Z           "complete": false,
2026-06-21T08:38:15.1188671Z           "evidence": []
2026-06-21T08:38:15.1188743Z         },
2026-06-21T08:38:15.1188824Z         "unit": {
2026-06-21T08:38:15.1188909Z           "complete": true,
2026-06-21T08:38:15.1189091Z           "evidence": [
2026-06-21T08:38:15.1189172Z             {
2026-06-21T08:38:15.1189281Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1189359Z               "line": 199
2026-06-21T08:38:15.1189439Z             },
2026-06-21T08:38:15.1189519Z             {
2026-06-21T08:38:15.1189630Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1189720Z               "line": 218
2026-06-21T08:38:15.1189801Z             },
2026-06-21T08:38:15.1189882Z             {
2026-06-21T08:38:15.1189988Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1190073Z               "line": 234
2026-06-21T08:38:15.1190264Z             },
2026-06-21T08:38:15.1190350Z             {
2026-06-21T08:38:15.1190454Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T08:38:15.1190620Z               "line": 256
2026-06-21T08:38:15.1190705Z             },
2026-06-21T08:38:15.1190780Z             {
2026-06-21T08:38:15.1190884Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T08:38:15.1190966Z               "line": 124
2026-06-21T08:38:15.1191048Z             },
2026-06-21T08:38:15.1191123Z             {
2026-06-21T08:38:15.1191232Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T08:38:15.1191324Z               "line": 140
2026-06-21T08:38:15.1191404Z             },
2026-06-21T08:38:15.1191490Z             {
2026-06-21T08:38:15.1191601Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T08:38:15.1191677Z               "line": 155
2026-06-21T08:38:15.1191762Z             }
2026-06-21T08:38:15.1191833Z           ]
2026-06-21T08:38:15.1191911Z         }
2026-06-21T08:38:15.1191996Z       }
2026-06-21T08:38:15.1192077Z     },
2026-06-21T08:38:15.1192158Z     {
2026-06-21T08:38:15.1192245Z       "id": "REQ-NOTIF-1",
2026-06-21T08:38:15.1192607Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T08:38:15.1192687Z       "requiredStages": [
2026-06-21T08:38:15.1192773Z         "impl",
2026-06-21T08:38:15.1192855Z         "unit",
2026-06-21T08:38:15.1192936Z         "int"
2026-06-21T08:38:15.1193016Z       ],
2026-06-21T08:38:15.1193097Z       "stages": {
2026-06-21T08:38:15.1193180Z         "doc": {
2026-06-21T08:38:15.1193265Z           "complete": false,
2026-06-21T08:38:15.1193354Z           "evidence": []
2026-06-21T08:38:15.1193425Z         },
2026-06-21T08:38:15.1193507Z         "impl": {
2026-06-21T08:38:15.1193605Z           "complete": true,
2026-06-21T08:38:15.1193690Z           "evidence": [
2026-06-21T08:38:15.1193771Z             {
2026-06-21T08:38:15.1193896Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1193971Z               "line": 514
2026-06-21T08:38:15.1194056Z             },
2026-06-21T08:38:15.1194124Z             {
2026-06-21T08:38:15.1194238Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1194319Z               "line": 30
2026-06-21T08:38:15.1194400Z             },
2026-06-21T08:38:15.1194482Z             {
2026-06-21T08:38:15.1194592Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1194681Z               "line": 69
2026-06-21T08:38:15.1194763Z             },
2026-06-21T08:38:15.1194845Z             {
2026-06-21T08:38:15.1194944Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1195025Z               "line": 93
2026-06-21T08:38:15.1195102Z             },
2026-06-21T08:38:15.1195188Z             {
2026-06-21T08:38:15.1195292Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1195378Z               "line": 107
2026-06-21T08:38:15.1195465Z             },
2026-06-21T08:38:15.1195545Z             {
2026-06-21T08:38:15.1195659Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1195737Z               "line": 142
2026-06-21T08:38:15.1195818Z             },
2026-06-21T08:38:15.1195897Z             {
2026-06-21T08:38:15.1196006Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1196097Z               "line": 187
2026-06-21T08:38:15.1196172Z             },
2026-06-21T08:38:15.1196261Z             {
2026-06-21T08:38:15.1196385Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1196477Z               "line": 258
2026-06-21T08:38:15.1196561Z             },
2026-06-21T08:38:15.1196638Z             {
2026-06-21T08:38:15.1196749Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1196835Z               "line": 372
2026-06-21T08:38:15.1196914Z             },
2026-06-21T08:38:15.1196986Z             {
2026-06-21T08:38:15.1197173Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1197253Z               "line": 479
2026-06-21T08:38:15.1197388Z             },
2026-06-21T08:38:15.1197472Z             {
2026-06-21T08:38:15.1197582Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1197669Z               "line": 24
2026-06-21T08:38:15.1197754Z             },
2026-06-21T08:38:15.1197835Z             {
2026-06-21T08:38:15.1197955Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1198041Z               "line": 34
2026-06-21T08:38:15.1198115Z             },
2026-06-21T08:38:15.1198192Z             {
2026-06-21T08:38:15.1198298Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1198379Z               "line": 60
2026-06-21T08:38:15.1198459Z             },
2026-06-21T08:38:15.1198541Z             {
2026-06-21T08:38:15.1198652Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1198750Z               "line": 82
2026-06-21T08:38:15.1198821Z             },
2026-06-21T08:38:15.1198897Z             {
2026-06-21T08:38:15.1199083Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1199164Z               "line": 94
2026-06-21T08:38:15.1199250Z             },
2026-06-21T08:38:15.1199332Z             {
2026-06-21T08:38:15.1199450Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.1199536Z               "line": 96
2026-06-21T08:38:15.1199614Z             },
2026-06-21T08:38:15.1199694Z             {
2026-06-21T08:38:15.1199808Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T08:38:15.1199894Z               "line": 44
2026-06-21T08:38:15.1199975Z             },
2026-06-21T08:38:15.1200056Z             {
2026-06-21T08:38:15.1200170Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T08:38:15.1200248Z               "line": 20
2026-06-21T08:38:15.1200337Z             },
2026-06-21T08:38:15.1200413Z             {
2026-06-21T08:38:15.1200534Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T08:38:15.1200614Z               "line": 30
2026-06-21T08:38:15.1200690Z             },
2026-06-21T08:38:15.1200771Z             {
2026-06-21T08:38:15.1200878Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T08:38:15.1200962Z               "line": 50
2026-06-21T08:38:15.1201042Z             },
2026-06-21T08:38:15.1201118Z             {
2026-06-21T08:38:15.1201219Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1201302Z               "line": 28
2026-06-21T08:38:15.1201383Z             },
2026-06-21T08:38:15.1201464Z             {
2026-06-21T08:38:15.1201570Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1201650Z               "line": 126
2026-06-21T08:38:15.1201735Z             },
2026-06-21T08:38:15.1201812Z             {
2026-06-21T08:38:15.1201917Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1202007Z               "line": 161
2026-06-21T08:38:15.1202093Z             },
2026-06-21T08:38:15.1202170Z             {
2026-06-21T08:38:15.1202279Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1202360Z               "line": 202
2026-06-21T08:38:15.1202437Z             },
2026-06-21T08:38:15.1202523Z             {
2026-06-21T08:38:15.1202613Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1202703Z               "line": 213
2026-06-21T08:38:15.1202786Z             },
2026-06-21T08:38:15.1202866Z             {
2026-06-21T08:38:15.1202975Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1203057Z               "line": 238
2026-06-21T08:38:15.1203143Z             },
2026-06-21T08:38:15.1203219Z             {
2026-06-21T08:38:15.1203324Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1203411Z               "line": 261
2026-06-21T08:38:15.1203486Z             },
2026-06-21T08:38:15.1203566Z             {
2026-06-21T08:38:15.1203797Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1203881Z               "line": 86
2026-06-21T08:38:15.1204052Z             }
2026-06-21T08:38:15.1204132Z           ]
2026-06-21T08:38:15.1204207Z         },
2026-06-21T08:38:15.1204278Z         "int": {
2026-06-21T08:38:15.1204369Z           "complete": true,
2026-06-21T08:38:15.1204446Z           "evidence": [
2026-06-21T08:38:15.1204527Z             {
2026-06-21T08:38:15.1204650Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1204727Z               "line": 285
2026-06-21T08:38:15.1204808Z             },
2026-06-21T08:38:15.1204889Z             {
2026-06-21T08:38:15.1205004Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T08:38:15.1205090Z               "line": 145
2026-06-21T08:38:15.1205171Z             },
2026-06-21T08:38:15.1205255Z             {
2026-06-21T08:38:15.1205371Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1205452Z               "line": 684
2026-06-21T08:38:15.1205523Z             },
2026-06-21T08:38:15.1205609Z             {
2026-06-21T08:38:15.1205724Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1205804Z               "line": 1102
2026-06-21T08:38:15.1205885Z             }
2026-06-21T08:38:15.1205963Z           ]
2026-06-21T08:38:15.1206049Z         },
2026-06-21T08:38:15.1206128Z         "unit": {
2026-06-21T08:38:15.1206209Z           "complete": true,
2026-06-21T08:38:15.1206297Z           "evidence": [
2026-06-21T08:38:15.1206382Z             {
2026-06-21T08:38:15.1206485Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1206566Z               "line": 572
2026-06-21T08:38:15.1206657Z             },
2026-06-21T08:38:15.1206732Z             {
2026-06-21T08:38:15.1206845Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1206927Z               "line": 636
2026-06-21T08:38:15.1207013Z             },
2026-06-21T08:38:15.1207098Z             {
2026-06-21T08:38:15.1207203Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1207290Z               "line": 740
2026-06-21T08:38:15.1207365Z             },
2026-06-21T08:38:15.1207451Z             {
2026-06-21T08:38:15.1207551Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1207637Z               "line": 772
2026-06-21T08:38:15.1207723Z             },
2026-06-21T08:38:15.1207789Z             {
2026-06-21T08:38:15.1207895Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1207981Z               "line": 840
2026-06-21T08:38:15.1208062Z             },
2026-06-21T08:38:15.1208142Z             {
2026-06-21T08:38:15.1208248Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1208333Z               "line": 898
2026-06-21T08:38:15.1208414Z             },
2026-06-21T08:38:15.1208495Z             {
2026-06-21T08:38:15.1208601Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1208695Z               "line": 1173
2026-06-21T08:38:15.1208776Z             },
2026-06-21T08:38:15.1208854Z             {
2026-06-21T08:38:15.1209062Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1209140Z               "line": 157
2026-06-21T08:38:15.1209226Z             },
2026-06-21T08:38:15.1209301Z             {
2026-06-21T08:38:15.1209414Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1209496Z               "line": 250
2026-06-21T08:38:15.1209577Z             },
2026-06-21T08:38:15.1209653Z             {
2026-06-21T08:38:15.1209767Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T08:38:15.1209844Z               "line": 273
2026-06-21T08:38:15.1209925Z             },
2026-06-21T08:38:15.1210000Z             {
2026-06-21T08:38:15.1210111Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.1210202Z               "line": 355
2026-06-21T08:38:15.1210283Z             },
2026-06-21T08:38:15.1210459Z             {
2026-06-21T08:38:15.1210582Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T08:38:15.1210755Z               "line": 392
2026-06-21T08:38:15.1210836Z             },
2026-06-21T08:38:15.1210921Z             {
2026-06-21T08:38:15.1211050Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T08:38:15.1211132Z               "line": 131
2026-06-21T08:38:15.1211212Z             },
2026-06-21T08:38:15.1211283Z             {
2026-06-21T08:38:15.1211394Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T08:38:15.1211476Z               "line": 72
2026-06-21T08:38:15.1211550Z             },
2026-06-21T08:38:15.1211631Z             {
2026-06-21T08:38:15.1211740Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T08:38:15.1211811Z               "line": 97
2026-06-21T08:38:15.1211895Z             },
2026-06-21T08:38:15.1211976Z             {
2026-06-21T08:38:15.1212091Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1212173Z               "line": 379
2026-06-21T08:38:15.1212248Z             },
2026-06-21T08:38:15.1212334Z             {
2026-06-21T08:38:15.1212439Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1212515Z               "line": 417
2026-06-21T08:38:15.1212601Z             },
2026-06-21T08:38:15.1212682Z             {
2026-06-21T08:38:15.1212787Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1212868Z               "line": 433
2026-06-21T08:38:15.1212953Z             },
2026-06-21T08:38:15.1213022Z             {
2026-06-21T08:38:15.1213126Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1213206Z               "line": 472
2026-06-21T08:38:15.1213287Z             },
2026-06-21T08:38:15.1213370Z             {
2026-06-21T08:38:15.1213479Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1213574Z               "line": 489
2026-06-21T08:38:15.1213656Z             },
2026-06-21T08:38:15.1213741Z             {
2026-06-21T08:38:15.1213846Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1213942Z               "line": 517
2026-06-21T08:38:15.1214023Z             },
2026-06-21T08:38:15.1214102Z             {
2026-06-21T08:38:15.1214203Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T08:38:15.1214290Z               "line": 548
2026-06-21T08:38:15.1214371Z             },
2026-06-21T08:38:15.1214455Z             {
2026-06-21T08:38:15.1214564Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1214651Z               "line": 745
2026-06-21T08:38:15.1214730Z             }
2026-06-21T08:38:15.1214810Z           ]
2026-06-21T08:38:15.1214891Z         }
2026-06-21T08:38:15.1214973Z       }
2026-06-21T08:38:15.1215054Z     },
2026-06-21T08:38:15.1215139Z     {
2026-06-21T08:38:15.1215234Z       "id": "REQ-NOTIF-2",
2026-06-21T08:38:15.1215491Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T08:38:15.1215593Z       "requiredStages": [
2026-06-21T08:38:15.1215674Z         "doc",
2026-06-21T08:38:15.1215763Z         "impl",
2026-06-21T08:38:15.1215840Z         "unit",
2026-06-21T08:38:15.1215922Z         "int"
2026-06-21T08:38:15.1216007Z       ],
2026-06-21T08:38:15.1216088Z       "stages": {
2026-06-21T08:38:15.1216174Z         "doc": {
2026-06-21T08:38:15.1216260Z           "complete": true,
2026-06-21T08:38:15.1216360Z           "evidence": [
2026-06-21T08:38:15.1216441Z             {
2026-06-21T08:38:15.1216533Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1216618Z               "line": 509
2026-06-21T08:38:15.1216698Z             },
2026-06-21T08:38:15.1216784Z             {
2026-06-21T08:38:15.1216886Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.1216970Z               "line": 123
2026-06-21T08:38:15.1217055Z             }
2026-06-21T08:38:15.1217136Z           ]
2026-06-21T08:38:15.1217221Z         },
2026-06-21T08:38:15.1217381Z         "impl": {
2026-06-21T08:38:15.1217467Z           "complete": true,
2026-06-21T08:38:15.1217549Z           "evidence": [
2026-06-21T08:38:15.1217696Z             {
2026-06-21T08:38:15.1217806Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1217893Z               "line": 287
2026-06-21T08:38:15.1217978Z             },
2026-06-21T08:38:15.1218053Z             {
2026-06-21T08:38:15.1218164Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1218250Z               "line": 301
2026-06-21T08:38:15.1218330Z             },
2026-06-21T08:38:15.1218412Z             {
2026-06-21T08:38:15.1218522Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1218597Z               "line": 326
2026-06-21T08:38:15.1218678Z             },
2026-06-21T08:38:15.1218760Z             {
2026-06-21T08:38:15.1218879Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1219046Z               "line": 239
2026-06-21T08:38:15.1219137Z             },
2026-06-21T08:38:15.1219213Z             {
2026-06-21T08:38:15.1219313Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1219400Z               "line": 95
2026-06-21T08:38:15.1219485Z             },
2026-06-21T08:38:15.1219565Z             {
2026-06-21T08:38:15.1219666Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1219748Z               "line": 2225
2026-06-21T08:38:15.1219833Z             },
2026-06-21T08:38:15.1219903Z             {
2026-06-21T08:38:15.1220003Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1220089Z               "line": 2274
2026-06-21T08:38:15.1220171Z             },
2026-06-21T08:38:15.1220255Z             {
2026-06-21T08:38:15.1220356Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1220438Z               "line": 2353
2026-06-21T08:38:15.1220524Z             },
2026-06-21T08:38:15.1220594Z             {
2026-06-21T08:38:15.1220695Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1220786Z               "line": 2392
2026-06-21T08:38:15.1220867Z             }
2026-06-21T08:38:15.1220947Z           ]
2026-06-21T08:38:15.1221024Z         },
2026-06-21T08:38:15.1221110Z         "int": {
2026-06-21T08:38:15.1221191Z           "complete": true,
2026-06-21T08:38:15.1221286Z           "evidence": [
2026-06-21T08:38:15.1221363Z             {
2026-06-21T08:38:15.1221486Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1221576Z               "line": 810
2026-06-21T08:38:15.1221659Z             },
2026-06-21T08:38:15.1221740Z             {
2026-06-21T08:38:15.1221853Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1221939Z               "line": 1345
2026-06-21T08:38:15.1222007Z             }
2026-06-21T08:38:15.1222082Z           ]
2026-06-21T08:38:15.1222153Z         },
2026-06-21T08:38:15.1222228Z         "unit": {
2026-06-21T08:38:15.1222324Z           "complete": true,
2026-06-21T08:38:15.1222409Z           "evidence": [
2026-06-21T08:38:15.1222494Z             {
2026-06-21T08:38:15.1222604Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1222699Z               "line": 1022
2026-06-21T08:38:15.1222780Z             },
2026-06-21T08:38:15.1222865Z             {
2026-06-21T08:38:15.1222971Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1223062Z               "line": 1090
2026-06-21T08:38:15.1223146Z             },
2026-06-21T08:38:15.1223223Z             {
2026-06-21T08:38:15.1223328Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1223409Z               "line": 8210
2026-06-21T08:38:15.1223490Z             },
2026-06-21T08:38:15.1223572Z             {
2026-06-21T08:38:15.1223671Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1223762Z               "line": 8265
2026-06-21T08:38:15.1223838Z             }
2026-06-21T08:38:15.1223925Z           ]
2026-06-21T08:38:15.1224000Z         }
2026-06-21T08:38:15.1224081Z       }
2026-06-21T08:38:15.1224264Z     },
2026-06-21T08:38:15.1224343Z     {
2026-06-21T08:38:15.1224439Z       "id": "REQ-PAIR-1",
2026-06-21T08:38:15.1224639Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T08:38:15.1224725Z       "requiredStages": [
2026-06-21T08:38:15.1224802Z         "impl",
2026-06-21T08:38:15.1224884Z         "unit",
2026-06-21T08:38:15.1224973Z         "int"
2026-06-21T08:38:15.1225049Z       ],
2026-06-21T08:38:15.1225139Z       "stages": {
2026-06-21T08:38:15.1225215Z         "doc": {
2026-06-21T08:38:15.1225308Z           "complete": false,
2026-06-21T08:38:15.1225403Z           "evidence": []
2026-06-21T08:38:15.1225484Z         },
2026-06-21T08:38:15.1225566Z         "impl": {
2026-06-21T08:38:15.1225647Z           "complete": true,
2026-06-21T08:38:15.1225732Z           "evidence": [
2026-06-21T08:38:15.1225814Z             {
2026-06-21T08:38:15.1225943Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1226033Z               "line": 27
2026-06-21T08:38:15.1226110Z             },
2026-06-21T08:38:15.1226200Z             {
2026-06-21T08:38:15.1226323Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1226420Z               "line": 88
2026-06-21T08:38:15.1226501Z             },
2026-06-21T08:38:15.1226581Z             {
2026-06-21T08:38:15.1226710Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1226797Z               "line": 110
2026-06-21T08:38:15.1226877Z             },
2026-06-21T08:38:15.1226958Z             {
2026-06-21T08:38:15.1227083Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1227164Z               "line": 153
2026-06-21T08:38:15.1227249Z             },
2026-06-21T08:38:15.1227326Z             {
2026-06-21T08:38:15.1227451Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1227526Z               "line": 182
2026-06-21T08:38:15.1227606Z             },
2026-06-21T08:38:15.1227691Z             {
2026-06-21T08:38:15.1227815Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1227899Z               "line": 29
2026-06-21T08:38:15.1227989Z             },
2026-06-21T08:38:15.1228071Z             {
2026-06-21T08:38:15.1228214Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T08:38:15.1228294Z               "line": 31
2026-06-21T08:38:15.1228376Z             },
2026-06-21T08:38:15.1228458Z             {
2026-06-21T08:38:15.1228585Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1228667Z               "line": 44
2026-06-21T08:38:15.1228739Z             },
2026-06-21T08:38:15.1228819Z             {
2026-06-21T08:38:15.1229021Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1229101Z               "line": 171
2026-06-21T08:38:15.1229177Z             },
2026-06-21T08:38:15.1229262Z             {
2026-06-21T08:38:15.1229383Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1229463Z               "line": 376
2026-06-21T08:38:15.1229544Z             }
2026-06-21T08:38:15.1229621Z           ]
2026-06-21T08:38:15.1229697Z         },
2026-06-21T08:38:15.1229778Z         "int": {
2026-06-21T08:38:15.1229863Z           "complete": true,
2026-06-21T08:38:15.1229950Z           "evidence": [
2026-06-21T08:38:15.1230027Z             {
2026-06-21T08:38:15.1230149Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1230236Z               "line": 645
2026-06-21T08:38:15.1230318Z             },
2026-06-21T08:38:15.1230398Z             {
2026-06-21T08:38:15.1230511Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1230606Z               "line": 887
2026-06-21T08:38:15.1230688Z             }
2026-06-21T08:38:15.1230769Z           ]
2026-06-21T08:38:15.1230854Z         },
2026-06-21T08:38:15.1230931Z         "unit": {
2026-06-21T08:38:15.1231026Z           "complete": true,
2026-06-21T08:38:15.1231207Z           "evidence": [
2026-06-21T08:38:15.1231298Z             {
2026-06-21T08:38:15.1231422Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1231603Z               "line": 236
2026-06-21T08:38:15.1231684Z             },
2026-06-21T08:38:15.1231770Z             {
2026-06-21T08:38:15.1231899Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T08:38:15.1231985Z               "line": 349
2026-06-21T08:38:15.1232071Z             },
2026-06-21T08:38:15.1232151Z             {
2026-06-21T08:38:15.1232271Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1232356Z               "line": 194
2026-06-21T08:38:15.1232441Z             },
2026-06-21T08:38:15.1232524Z             {
2026-06-21T08:38:15.1232642Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1232722Z               "line": 216
2026-06-21T08:38:15.1232803Z             },
2026-06-21T08:38:15.1232889Z             {
2026-06-21T08:38:15.1233002Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1233087Z               "line": 230
2026-06-21T08:38:15.1233173Z             },
2026-06-21T08:38:15.1233254Z             {
2026-06-21T08:38:15.1233382Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1233464Z               "line": 242
2026-06-21T08:38:15.1233541Z             },
2026-06-21T08:38:15.1233622Z             {
2026-06-21T08:38:15.1233740Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1233822Z               "line": 256
2026-06-21T08:38:15.1233893Z             },
2026-06-21T08:38:15.1233970Z             {
2026-06-21T08:38:15.1234093Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1234175Z               "line": 270
2026-06-21T08:38:15.1234265Z             },
2026-06-21T08:38:15.1234345Z             {
2026-06-21T08:38:15.1234466Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1234556Z               "line": 277
2026-06-21T08:38:15.1234637Z             },
2026-06-21T08:38:15.1234718Z             {
2026-06-21T08:38:15.1234848Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T08:38:15.1234927Z               "line": 295
2026-06-21T08:38:15.1235008Z             },
2026-06-21T08:38:15.1235095Z             {
2026-06-21T08:38:15.1235209Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1235304Z               "line": 968
2026-06-21T08:38:15.1235377Z             },
2026-06-21T08:38:15.1235463Z             {
2026-06-21T08:38:15.1235585Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1235660Z               "line": 1051
2026-06-21T08:38:15.1235747Z             },
2026-06-21T08:38:15.1235832Z             {
2026-06-21T08:38:15.1235954Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1236040Z               "line": 1121
2026-06-21T08:38:15.1236126Z             },
2026-06-21T08:38:15.1236207Z             {
2026-06-21T08:38:15.1236326Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1236413Z               "line": 1182
2026-06-21T08:38:15.1236489Z             },
2026-06-21T08:38:15.1236564Z             {
2026-06-21T08:38:15.1236679Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1236765Z               "line": 1238
2026-06-21T08:38:15.1236855Z             },
2026-06-21T08:38:15.1236936Z             {
2026-06-21T08:38:15.1237057Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1237141Z               "line": 1457
2026-06-21T08:38:15.1237222Z             }
2026-06-21T08:38:15.1237299Z           ]
2026-06-21T08:38:15.1237377Z         }
2026-06-21T08:38:15.1237456Z       }
2026-06-21T08:38:15.1237537Z     },
2026-06-21T08:38:15.1237614Z     {
2026-06-21T08:38:15.1237696Z       "id": "REQ-PAIR-2",
2026-06-21T08:38:15.1237823Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T08:38:15.1238001Z       "requiredStages": [],
2026-06-21T08:38:15.1238086Z       "stages": {
2026-06-21T08:38:15.1238241Z         "doc": {
2026-06-21T08:38:15.1238323Z           "complete": false,
2026-06-21T08:38:15.1238421Z           "evidence": []
2026-06-21T08:38:15.1238502Z         },
2026-06-21T08:38:15.1238588Z         "impl": {
2026-06-21T08:38:15.1238679Z           "complete": false,
2026-06-21T08:38:15.1238764Z           "evidence": []
2026-06-21T08:38:15.1238845Z         },
2026-06-21T08:38:15.1238926Z         "int": {
2026-06-21T08:38:15.1239107Z           "complete": false,
2026-06-21T08:38:15.1239188Z           "evidence": []
2026-06-21T08:38:15.1239271Z         },
2026-06-21T08:38:15.1239356Z         "unit": {
2026-06-21T08:38:15.1239441Z           "complete": false,
2026-06-21T08:38:15.1239522Z           "evidence": []
2026-06-21T08:38:15.1239604Z         }
2026-06-21T08:38:15.1239684Z       }
2026-06-21T08:38:15.1239765Z     },
2026-06-21T08:38:15.1239846Z     {
2026-06-21T08:38:15.1239933Z       "id": "REQ-PAIR-3",
2026-06-21T08:38:15.1240076Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T08:38:15.1240166Z       "requiredStages": [
2026-06-21T08:38:15.1240253Z         "impl",
2026-06-21T08:38:15.1240338Z         "unit"
2026-06-21T08:38:15.1240409Z       ],
2026-06-21T08:38:15.1240496Z       "stages": {
2026-06-21T08:38:15.1240572Z         "doc": {
2026-06-21T08:38:15.1240657Z           "complete": false,
2026-06-21T08:38:15.1240753Z           "evidence": []
2026-06-21T08:38:15.1240830Z         },
2026-06-21T08:38:15.1240916Z         "impl": {
2026-06-21T08:38:15.1240995Z           "complete": true,
2026-06-21T08:38:15.1241089Z           "evidence": [
2026-06-21T08:38:15.1241166Z             {
2026-06-21T08:38:15.1241277Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1241371Z               "line": 3259
2026-06-21T08:38:15.1241452Z             },
2026-06-21T08:38:15.1241539Z             {
2026-06-21T08:38:15.1241676Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1241767Z               "line": 3328
2026-06-21T08:38:15.1241854Z             },
2026-06-21T08:38:15.1241939Z             {
2026-06-21T08:38:15.1242043Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1242125Z               "line": 3709
2026-06-21T08:38:15.1242206Z             },
2026-06-21T08:38:15.1242292Z             {
2026-06-21T08:38:15.1242396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1242478Z               "line": 4961
2026-06-21T08:38:15.1242564Z             }
2026-06-21T08:38:15.1242645Z           ]
2026-06-21T08:38:15.1242721Z         },
2026-06-21T08:38:15.1242798Z         "int": {
2026-06-21T08:38:15.1242888Z           "complete": false,
2026-06-21T08:38:15.1245422Z           "evidence": []
2026-06-21T08:38:15.1245522Z         },
2026-06-21T08:38:15.1245612Z         "unit": {
2026-06-21T08:38:15.1245713Z           "complete": true,
2026-06-21T08:38:15.1245797Z           "evidence": [
2026-06-21T08:38:15.1245893Z             {
2026-06-21T08:38:15.1246004Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1246103Z               "line": 9964
2026-06-21T08:38:15.1246188Z             },
2026-06-21T08:38:15.1246274Z             {
2026-06-21T08:38:15.1246378Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1246466Z               "line": 10179
2026-06-21T08:38:15.1246547Z             },
2026-06-21T08:38:15.1246629Z             {
2026-06-21T08:38:15.1246730Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1246819Z               "line": 10838
2026-06-21T08:38:15.1246900Z             },
2026-06-21T08:38:15.1246983Z             {
2026-06-21T08:38:15.1247078Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1247158Z               "line": 10857
2026-06-21T08:38:15.1247230Z             },
2026-06-21T08:38:15.1247312Z             {
2026-06-21T08:38:15.1247416Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1247622Z               "line": 10881
2026-06-21T08:38:15.1247706Z             },
2026-06-21T08:38:15.1247787Z             {
2026-06-21T08:38:15.1247983Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1248069Z               "line": 10900
2026-06-21T08:38:15.1248145Z             },
2026-06-21T08:38:15.1248222Z             {
2026-06-21T08:38:15.1248326Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1248412Z               "line": 10913
2026-06-21T08:38:15.1248494Z             },
2026-06-21T08:38:15.1248576Z             {
2026-06-21T08:38:15.1248669Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1248750Z               "line": 10922
2026-06-21T08:38:15.1248831Z             }
2026-06-21T08:38:15.1248902Z           ]
2026-06-21T08:38:15.1249062Z         }
2026-06-21T08:38:15.1249143Z       }
2026-06-21T08:38:15.1249225Z     },
2026-06-21T08:38:15.1249310Z     {
2026-06-21T08:38:15.1249405Z       "id": "REQ-PAIR-4",
2026-06-21T08:38:15.1249511Z       "title": "Subnet naming on first pairing",
2026-06-21T08:38:15.1249606Z       "requiredStages": [
2026-06-21T08:38:15.1249691Z         "impl",
2026-06-21T08:38:15.1249772Z         "unit"
2026-06-21T08:38:15.1249859Z       ],
2026-06-21T08:38:15.1249940Z       "stages": {
2026-06-21T08:38:15.1250015Z         "doc": {
2026-06-21T08:38:15.1250107Z           "complete": false,
2026-06-21T08:38:15.1250197Z           "evidence": []
2026-06-21T08:38:15.1250283Z         },
2026-06-21T08:38:15.1250359Z         "impl": {
2026-06-21T08:38:15.1250445Z           "complete": true,
2026-06-21T08:38:15.1250526Z           "evidence": [
2026-06-21T08:38:15.1250607Z             {
2026-06-21T08:38:15.1250721Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T08:38:15.1250804Z               "line": 174
2026-06-21T08:38:15.1250883Z             }
2026-06-21T08:38:15.1250955Z           ]
2026-06-21T08:38:15.1251031Z         },
2026-06-21T08:38:15.1251109Z         "int": {
2026-06-21T08:38:15.1251198Z           "complete": false,
2026-06-21T08:38:15.1251284Z           "evidence": []
2026-06-21T08:38:15.1251371Z         },
2026-06-21T08:38:15.1251471Z         "unit": {
2026-06-21T08:38:15.1251560Z           "complete": true,
2026-06-21T08:38:15.1251635Z           "evidence": [
2026-06-21T08:38:15.1251712Z             {
2026-06-21T08:38:15.1251837Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1251931Z               "line": 1294
2026-06-21T08:38:15.1252012Z             }
2026-06-21T08:38:15.1252085Z           ]
2026-06-21T08:38:15.1252166Z         }
2026-06-21T08:38:15.1252251Z       }
2026-06-21T08:38:15.1252322Z     },
2026-06-21T08:38:15.1252395Z     {
2026-06-21T08:38:15.1252485Z       "id": "REQ-PAIR-5",
2026-06-21T08:38:15.1252785Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T08:38:15.1252876Z       "requiredStages": [
2026-06-21T08:38:15.1252961Z         "impl",
2026-06-21T08:38:15.1253044Z         "unit",
2026-06-21T08:38:15.1253128Z         "int"
2026-06-21T08:38:15.1253214Z       ],
2026-06-21T08:38:15.1253296Z       "stages": {
2026-06-21T08:38:15.1253372Z         "doc": {
2026-06-21T08:38:15.1253471Z           "complete": false,
2026-06-21T08:38:15.1253548Z           "evidence": []
2026-06-21T08:38:15.1253629Z         },
2026-06-21T08:38:15.1253716Z         "impl": {
2026-06-21T08:38:15.1253805Z           "complete": true,
2026-06-21T08:38:15.1253890Z           "evidence": [
2026-06-21T08:38:15.1253971Z             {
2026-06-21T08:38:15.1254103Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1254183Z               "line": 44
2026-06-21T08:38:15.1254264Z             },
2026-06-21T08:38:15.1254351Z             {
2026-06-21T08:38:15.1254465Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1254550Z               "line": 96
2026-06-21T08:38:15.1254632Z             },
2026-06-21T08:38:15.1254709Z             {
2026-06-21T08:38:15.1254928Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1255014Z               "line": 107
2026-06-21T08:38:15.1255194Z             },
2026-06-21T08:38:15.1255276Z             {
2026-06-21T08:38:15.1255390Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1255475Z               "line": 124
2026-06-21T08:38:15.1255562Z             },
2026-06-21T08:38:15.1255643Z             {
2026-06-21T08:38:15.1255762Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1255848Z               "line": 155
2026-06-21T08:38:15.1255930Z             },
2026-06-21T08:38:15.1256015Z             {
2026-06-21T08:38:15.1256133Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1256216Z               "line": 195
2026-06-21T08:38:15.1256301Z             },
2026-06-21T08:38:15.1256386Z             {
2026-06-21T08:38:15.1256502Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1256598Z               "line": 251
2026-06-21T08:38:15.1256682Z             },
2026-06-21T08:38:15.1256762Z             {
2026-06-21T08:38:15.1256910Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1256994Z               "line": 33
2026-06-21T08:38:15.1257079Z             },
2026-06-21T08:38:15.1257156Z             {
2026-06-21T08:38:15.1257290Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1257379Z               "line": 45
2026-06-21T08:38:15.1257460Z             },
2026-06-21T08:38:15.1257538Z             {
2026-06-21T08:38:15.1257666Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1257761Z               "line": 59
2026-06-21T08:38:15.1257848Z             },
2026-06-21T08:38:15.1257928Z             {
2026-06-21T08:38:15.1258051Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1258139Z               "line": 376
2026-06-21T08:38:15.1258220Z             }
2026-06-21T08:38:15.1258301Z           ]
2026-06-21T08:38:15.1258386Z         },
2026-06-21T08:38:15.1258473Z         "int": {
2026-06-21T08:38:15.1258558Z           "complete": true,
2026-06-21T08:38:15.1258639Z           "evidence": [
2026-06-21T08:38:15.1258720Z             {
2026-06-21T08:38:15.1258840Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1258919Z               "line": 887
2026-06-21T08:38:15.1259093Z             },
2026-06-21T08:38:15.1259174Z             {
2026-06-21T08:38:15.1259305Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1259391Z               "line": 342
2026-06-21T08:38:15.1259467Z             }
2026-06-21T08:38:15.1259551Z           ]
2026-06-21T08:38:15.1259631Z         },
2026-06-21T08:38:15.1259708Z         "unit": {
2026-06-21T08:38:15.1259799Z           "complete": true,
2026-06-21T08:38:15.1259880Z           "evidence": [
2026-06-21T08:38:15.1259965Z             {
2026-06-21T08:38:15.1260091Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1260176Z               "line": 293
2026-06-21T08:38:15.1260251Z             },
2026-06-21T08:38:15.1260337Z             {
2026-06-21T08:38:15.1260452Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1260533Z               "line": 304
2026-06-21T08:38:15.1260614Z             },
2026-06-21T08:38:15.1260691Z             {
2026-06-21T08:38:15.1260809Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1260890Z               "line": 406
2026-06-21T08:38:15.1260976Z             },
2026-06-21T08:38:15.1261059Z             {
2026-06-21T08:38:15.1261186Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1261267Z               "line": 72
2026-06-21T08:38:15.1261349Z             },
2026-06-21T08:38:15.1261429Z             {
2026-06-21T08:38:15.1261577Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1261758Z               "line": 82
2026-06-21T08:38:15.1261844Z             },
2026-06-21T08:38:15.1261926Z             {
2026-06-21T08:38:15.1262139Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1262224Z               "line": 100
2026-06-21T08:38:15.1262306Z             },
2026-06-21T08:38:15.1262388Z             {
2026-06-21T08:38:15.1262506Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1262592Z               "line": 110
2026-06-21T08:38:15.1262673Z             },
2026-06-21T08:38:15.1262754Z             {
2026-06-21T08:38:15.1262877Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T08:38:15.1262965Z               "line": 125
2026-06-21T08:38:15.1263050Z             },
2026-06-21T08:38:15.1263125Z             {
2026-06-21T08:38:15.1263250Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1263336Z               "line": 1044
2026-06-21T08:38:15.1263426Z             },
2026-06-21T08:38:15.1263502Z             {
2026-06-21T08:38:15.1263627Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1263722Z               "line": 1110
2026-06-21T08:38:15.1263803Z             },
2026-06-21T08:38:15.1263885Z             {
2026-06-21T08:38:15.1264003Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1264084Z               "line": 1357
2026-06-21T08:38:15.1264165Z             }
2026-06-21T08:38:15.1264248Z           ]
2026-06-21T08:38:15.1264332Z         }
2026-06-21T08:38:15.1264412Z       }
2026-06-21T08:38:15.1264498Z     },
2026-06-21T08:38:15.1264574Z     {
2026-06-21T08:38:15.1264668Z       "id": "REQ-PAIR-6",
2026-06-21T08:38:15.1264926Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T08:38:15.1265025Z       "requiredStages": [
2026-06-21T08:38:15.1265101Z         "impl",
2026-06-21T08:38:15.1265178Z         "unit"
2026-06-21T08:38:15.1265255Z       ],
2026-06-21T08:38:15.1265335Z       "stages": {
2026-06-21T08:38:15.1265415Z         "doc": {
2026-06-21T08:38:15.1265503Z           "complete": false,
2026-06-21T08:38:15.1265588Z           "evidence": []
2026-06-21T08:38:15.1265664Z         },
2026-06-21T08:38:15.1265744Z         "impl": {
2026-06-21T08:38:15.1265841Z           "complete": true,
2026-06-21T08:38:15.1265927Z           "evidence": [
2026-06-21T08:38:15.1266012Z             {
2026-06-21T08:38:15.1266117Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1266208Z               "line": 3328
2026-06-21T08:38:15.1266294Z             },
2026-06-21T08:38:15.1266369Z             {
2026-06-21T08:38:15.1266471Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1266560Z               "line": 3709
2026-06-21T08:38:15.1266637Z             },
2026-06-21T08:38:15.1266713Z             {
2026-06-21T08:38:15.1266833Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.1266927Z               "line": 18
2026-06-21T08:38:15.1267004Z             },
2026-06-21T08:38:15.1267086Z             {
2026-06-21T08:38:15.1267200Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.1267284Z               "line": 49
2026-06-21T08:38:15.1267365Z             },
2026-06-21T08:38:15.1267441Z             {
2026-06-21T08:38:15.1267549Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.1267629Z               "line": 318
2026-06-21T08:38:15.1267711Z             }
2026-06-21T08:38:15.1267793Z           ]
2026-06-21T08:38:15.1267874Z         },
2026-06-21T08:38:15.1267953Z         "int": {
2026-06-21T08:38:15.1268040Z           "complete": false,
2026-06-21T08:38:15.1268127Z           "evidence": []
2026-06-21T08:38:15.1268212Z         },
2026-06-21T08:38:15.1268287Z         "unit": {
2026-06-21T08:38:15.1268379Z           "complete": true,
2026-06-21T08:38:15.1268470Z           "evidence": [
2026-06-21T08:38:15.1268546Z             {
2026-06-21T08:38:15.1268727Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1268817Z               "line": 10935
2026-06-21T08:38:15.1269037Z             },
2026-06-21T08:38:15.1269118Z             {
2026-06-21T08:38:15.1269218Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1269299Z               "line": 10952
2026-06-21T08:38:15.1269376Z             },
2026-06-21T08:38:15.1269461Z             {
2026-06-21T08:38:15.1269570Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.1269662Z               "line": 383
2026-06-21T08:38:15.1269734Z             },
2026-06-21T08:38:15.1269813Z             {
2026-06-21T08:38:15.1269926Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T08:38:15.1270003Z               "line": 392
2026-06-21T08:38:15.1270079Z             }
2026-06-21T08:38:15.1270163Z           ]
2026-06-21T08:38:15.1270239Z         }
2026-06-21T08:38:15.1270311Z       }
2026-06-21T08:38:15.1270388Z     },
2026-06-21T08:38:15.1270468Z     {
2026-06-21T08:38:15.1270554Z       "id": "REQ-PAIR-7",
2026-06-21T08:38:15.1270707Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T08:38:15.1270802Z       "requiredStages": [],
2026-06-21T08:38:15.1270887Z       "stages": {
2026-06-21T08:38:15.1270965Z         "doc": {
2026-06-21T08:38:15.1271041Z           "complete": false,
2026-06-21T08:38:15.1271131Z           "evidence": []
2026-06-21T08:38:15.1271207Z         },
2026-06-21T08:38:15.1271294Z         "impl": {
2026-06-21T08:38:15.1271379Z           "complete": false,
2026-06-21T08:38:15.1271464Z           "evidence": []
2026-06-21T08:38:15.1271561Z         },
2026-06-21T08:38:15.1271638Z         "int": {
2026-06-21T08:38:15.1271723Z           "complete": false,
2026-06-21T08:38:15.1271808Z           "evidence": []
2026-06-21T08:38:15.1271890Z         },
2026-06-21T08:38:15.1271971Z         "unit": {
2026-06-21T08:38:15.1272056Z           "complete": false,
2026-06-21T08:38:15.1272142Z           "evidence": []
2026-06-21T08:38:15.1272224Z         }
2026-06-21T08:38:15.1272305Z       }
2026-06-21T08:38:15.1272385Z     },
2026-06-21T08:38:15.1272462Z     {
2026-06-21T08:38:15.1272558Z       "id": "REQ-PAIR-8",
2026-06-21T08:38:15.1273920Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T08:38:15.1274029Z       "requiredStages": [
2026-06-21T08:38:15.1274111Z         "impl",
2026-06-21T08:38:15.1274197Z         "unit"
2026-06-21T08:38:15.1274282Z       ],
2026-06-21T08:38:15.1274363Z       "stages": {
2026-06-21T08:38:15.1274445Z         "doc": {
2026-06-21T08:38:15.1274526Z           "complete": false,
2026-06-21T08:38:15.1274606Z           "evidence": []
2026-06-21T08:38:15.1274697Z         },
2026-06-21T08:38:15.1274779Z         "impl": {
2026-06-21T08:38:15.1274869Z           "complete": true,
2026-06-21T08:38:15.1274949Z           "evidence": [
2026-06-21T08:38:15.1275034Z             {
2026-06-21T08:38:15.1275149Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1275237Z               "line": 577
2026-06-21T08:38:15.1275318Z             },
2026-06-21T08:38:15.1275404Z             {
2026-06-21T08:38:15.1275534Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1275618Z               "line": 22
2026-06-21T08:38:15.1275695Z             },
2026-06-21T08:38:15.1275776Z             {
2026-06-21T08:38:15.1275890Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1275975Z               "line": 76
2026-06-21T08:38:15.1276053Z             },
2026-06-21T08:38:15.1276134Z             {
2026-06-21T08:38:15.1276252Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1276453Z               "line": 127
2026-06-21T08:38:15.1276534Z             }
2026-06-21T08:38:15.1276707Z           ]
2026-06-21T08:38:15.1276787Z         },
2026-06-21T08:38:15.1276877Z         "int": {
2026-06-21T08:38:15.1276973Z           "complete": false,
2026-06-21T08:38:15.1277050Z           "evidence": []
2026-06-21T08:38:15.1277135Z         },
2026-06-21T08:38:15.1277207Z         "unit": {
2026-06-21T08:38:15.1277298Z           "complete": true,
2026-06-21T08:38:15.1277384Z           "evidence": [
2026-06-21T08:38:15.1277473Z             {
2026-06-21T08:38:15.1277598Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1277675Z               "line": 183
2026-06-21T08:38:15.1277760Z             },
2026-06-21T08:38:15.1277840Z             {
2026-06-21T08:38:15.1277958Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1278044Z               "line": 195
2026-06-21T08:38:15.1278123Z             },
2026-06-21T08:38:15.1278204Z             {
2026-06-21T08:38:15.1278324Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1278410Z               "line": 211
2026-06-21T08:38:15.1278490Z             },
2026-06-21T08:38:15.1278571Z             {
2026-06-21T08:38:15.1278692Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T08:38:15.1278777Z               "line": 227
2026-06-21T08:38:15.1278862Z             }
2026-06-21T08:38:15.1279001Z           ]
2026-06-21T08:38:15.1279087Z         }
2026-06-21T08:38:15.1279158Z       }
2026-06-21T08:38:15.1279244Z     },
2026-06-21T08:38:15.1279330Z     {
2026-06-21T08:38:15.1279421Z       "id": "REQ-PICKER-1",
2026-06-21T08:38:15.1282960Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T08:38:15.1283076Z       "requiredStages": [
2026-06-21T08:38:15.1283152Z         "impl",
2026-06-21T08:38:15.1283250Z         "unit"
2026-06-21T08:38:15.1283330Z       ],
2026-06-21T08:38:15.1283412Z       "stages": {
2026-06-21T08:38:15.1283503Z         "doc": {
2026-06-21T08:38:15.1283588Z           "complete": false,
2026-06-21T08:38:15.1283678Z           "evidence": []
2026-06-21T08:38:15.1283760Z         },
2026-06-21T08:38:15.1283841Z         "impl": {
2026-06-21T08:38:15.1283926Z           "complete": true,
2026-06-21T08:38:15.1284017Z           "evidence": [
2026-06-21T08:38:15.1284109Z             {
2026-06-21T08:38:15.1284227Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1284313Z               "line": 248
2026-06-21T08:38:15.1284390Z             },
2026-06-21T08:38:15.1284470Z             {
2026-06-21T08:38:15.1284589Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1284666Z               "line": 263
2026-06-21T08:38:15.1284743Z             }
2026-06-21T08:38:15.1284828Z           ]
2026-06-21T08:38:15.1284909Z         },
2026-06-21T08:38:15.1285100Z         "int": {
2026-06-21T08:38:15.1285200Z           "complete": false,
2026-06-21T08:38:15.1285383Z           "evidence": []
2026-06-21T08:38:15.1285466Z         },
2026-06-21T08:38:15.1285547Z         "unit": {
2026-06-21T08:38:15.1285637Z           "complete": true,
2026-06-21T08:38:15.1285732Z           "evidence": [
2026-06-21T08:38:15.1285802Z             {
2026-06-21T08:38:15.1285925Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.1286022Z               "line": 476
2026-06-21T08:38:15.1286103Z             },
2026-06-21T08:38:15.1286188Z             {
2026-06-21T08:38:15.1286298Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1286394Z               "line": 753
2026-06-21T08:38:15.1286474Z             },
2026-06-21T08:38:15.1286554Z             {
2026-06-21T08:38:15.1286666Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1286756Z               "line": 886
2026-06-21T08:38:15.1286846Z             },
2026-06-21T08:38:15.1286928Z             {
2026-06-21T08:38:15.1287042Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1287127Z               "line": 455
2026-06-21T08:38:15.1287213Z             }
2026-06-21T08:38:15.1287296Z           ]
2026-06-21T08:38:15.1287375Z         }
2026-06-21T08:38:15.1287456Z       }
2026-06-21T08:38:15.1287538Z     },
2026-06-21T08:38:15.1287624Z     {
2026-06-21T08:38:15.1287714Z       "id": "REQ-PICKER-2",
2026-06-21T08:38:15.1289666Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T08:38:15.1289771Z       "requiredStages": [
2026-06-21T08:38:15.1289857Z         "impl",
2026-06-21T08:38:15.1289947Z         "unit"
2026-06-21T08:38:15.1290033Z       ],
2026-06-21T08:38:15.1290119Z       "stages": {
2026-06-21T08:38:15.1290210Z         "doc": {
2026-06-21T08:38:15.1290299Z           "complete": false,
2026-06-21T08:38:15.1290390Z           "evidence": []
2026-06-21T08:38:15.1290478Z         },
2026-06-21T08:38:15.1290562Z         "impl": {
2026-06-21T08:38:15.1290643Z           "complete": true,
2026-06-21T08:38:15.1290730Z           "evidence": [
2026-06-21T08:38:15.1290816Z             {
2026-06-21T08:38:15.1290948Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1291033Z               "line": 183
2026-06-21T08:38:15.1291124Z             },
2026-06-21T08:38:15.1291199Z             {
2026-06-21T08:38:15.1291316Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1291408Z               "line": 296
2026-06-21T08:38:15.1291494Z             }
2026-06-21T08:38:15.1291579Z           ]
2026-06-21T08:38:15.1291650Z         },
2026-06-21T08:38:15.1291732Z         "int": {
2026-06-21T08:38:15.1291818Z           "complete": false,
2026-06-21T08:38:15.1291908Z           "evidence": []
2026-06-21T08:38:15.1291989Z         },
2026-06-21T08:38:15.1292076Z         "unit": {
2026-06-21T08:38:15.1292161Z           "complete": true,
2026-06-21T08:38:15.1292247Z           "evidence": [
2026-06-21T08:38:15.1292333Z             {
2026-06-21T08:38:15.1292457Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1292538Z               "line": 655
2026-06-21T08:38:15.1292618Z             }
2026-06-21T08:38:15.1292715Z           ]
2026-06-21T08:38:15.1292791Z         }
2026-06-21T08:38:15.1292877Z       }
2026-06-21T08:38:15.1292957Z     },
2026-06-21T08:38:15.1293039Z     {
2026-06-21T08:38:15.1293134Z       "id": "REQ-PICKER-3",
2026-06-21T08:38:15.1295674Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T08:38:15.1295865Z       "requiredStages": [
2026-06-21T08:38:15.1295957Z         "impl",
2026-06-21T08:38:15.1296040Z         "unit"
2026-06-21T08:38:15.1296131Z       ],
2026-06-21T08:38:15.1296226Z       "stages": {
2026-06-21T08:38:15.1296302Z         "doc": {
2026-06-21T08:38:15.1296395Z           "complete": false,
2026-06-21T08:38:15.1296485Z           "evidence": []
2026-06-21T08:38:15.1296572Z         },
2026-06-21T08:38:15.1296654Z         "impl": {
2026-06-21T08:38:15.1296738Z           "complete": true,
2026-06-21T08:38:15.1296829Z           "evidence": [
2026-06-21T08:38:15.1296911Z             {
2026-06-21T08:38:15.1297020Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1297101Z               "line": 124
2026-06-21T08:38:15.1297188Z             }
2026-06-21T08:38:15.1297268Z           ]
2026-06-21T08:38:15.1297353Z         },
2026-06-21T08:38:15.1297430Z         "int": {
2026-06-21T08:38:15.1297517Z           "complete": false,
2026-06-21T08:38:15.1297612Z           "evidence": []
2026-06-21T08:38:15.1297692Z         },
2026-06-21T08:38:15.1297773Z         "unit": {
2026-06-21T08:38:15.1297860Z           "complete": true,
2026-06-21T08:38:15.1297955Z           "evidence": [
2026-06-21T08:38:15.1298040Z             {
2026-06-21T08:38:15.1298147Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1298231Z               "line": 369
2026-06-21T08:38:15.1298312Z             }
2026-06-21T08:38:15.1298393Z           ]
2026-06-21T08:38:15.1298476Z         }
2026-06-21T08:38:15.1298555Z       }
2026-06-21T08:38:15.1298636Z     },
2026-06-21T08:38:15.1298718Z     {
2026-06-21T08:38:15.1298815Z       "id": "REQ-PICKER-4",
2026-06-21T08:38:15.1300798Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T08:38:15.1300908Z       "requiredStages": [
2026-06-21T08:38:15.1300999Z         "impl",
2026-06-21T08:38:15.1301085Z         "unit"
2026-06-21T08:38:15.1301165Z       ],
2026-06-21T08:38:15.1301237Z       "stages": {
2026-06-21T08:38:15.1301328Z         "doc": {
2026-06-21T08:38:15.1301428Z           "complete": false,
2026-06-21T08:38:15.1301503Z           "evidence": []
2026-06-21T08:38:15.1301593Z         },
2026-06-21T08:38:15.1301675Z         "impl": {
2026-06-21T08:38:15.1301764Z           "complete": true,
2026-06-21T08:38:15.1301849Z           "evidence": [
2026-06-21T08:38:15.1301939Z             {
2026-06-21T08:38:15.1302069Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1302163Z               "line": 353
2026-06-21T08:38:15.1302249Z             },
2026-06-21T08:38:15.1302436Z             {
2026-06-21T08:38:15.1302544Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1302717Z               "line": 105
2026-06-21T08:38:15.1302797Z             }
2026-06-21T08:38:15.1302878Z           ]
2026-06-21T08:38:15.1302960Z         },
2026-06-21T08:38:15.1303041Z         "int": {
2026-06-21T08:38:15.1303122Z           "complete": false,
2026-06-21T08:38:15.1303222Z           "evidence": []
2026-06-21T08:38:15.1303294Z         },
2026-06-21T08:38:15.1303379Z         "unit": {
2026-06-21T08:38:15.1303470Z           "complete": true,
2026-06-21T08:38:15.1303551Z           "evidence": [
2026-06-21T08:38:15.1303628Z             {
2026-06-21T08:38:15.1303746Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1303832Z               "line": 1246
2026-06-21T08:38:15.1303919Z             },
2026-06-21T08:38:15.1303999Z             {
2026-06-21T08:38:15.1304118Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1304215Z               "line": 427
2026-06-21T08:38:15.1304295Z             }
2026-06-21T08:38:15.1304365Z           ]
2026-06-21T08:38:15.1304455Z         }
2026-06-21T08:38:15.1304542Z       }
2026-06-21T08:38:15.1304623Z     },
2026-06-21T08:38:15.1304709Z     {
2026-06-21T08:38:15.1304799Z       "id": "REQ-PICKER-5",
2026-06-21T08:38:15.1307824Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T08:38:15.1307932Z       "requiredStages": [
2026-06-21T08:38:15.1308014Z         "impl",
2026-06-21T08:38:15.1308101Z         "unit"
2026-06-21T08:38:15.1308186Z       ],
2026-06-21T08:38:15.1308266Z       "stages": {
2026-06-21T08:38:15.1308353Z         "doc": {
2026-06-21T08:38:15.1308444Z           "complete": false,
2026-06-21T08:38:15.1308525Z           "evidence": []
2026-06-21T08:38:15.1308605Z         },
2026-06-21T08:38:15.1308692Z         "impl": {
2026-06-21T08:38:15.1308782Z           "complete": true,
2026-06-21T08:38:15.1308863Z           "evidence": [
2026-06-21T08:38:15.1309036Z             {
2026-06-21T08:38:15.1309134Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1309220Z               "line": 1802
2026-06-21T08:38:15.1309308Z             }
2026-06-21T08:38:15.1309408Z           ]
2026-06-21T08:38:15.1309487Z         },
2026-06-21T08:38:15.1309567Z         "int": {
2026-06-21T08:38:15.1309668Z           "complete": false,
2026-06-21T08:38:15.1309748Z           "evidence": []
2026-06-21T08:38:15.1309832Z         },
2026-06-21T08:38:15.1309913Z         "unit": {
2026-06-21T08:38:15.1309999Z           "complete": true,
2026-06-21T08:38:15.1310086Z           "evidence": [
2026-06-21T08:38:15.1310161Z             {
2026-06-21T08:38:15.1310271Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1310348Z               "line": 7526
2026-06-21T08:38:15.1310438Z             }
2026-06-21T08:38:15.1310523Z           ]
2026-06-21T08:38:15.1310610Z         }
2026-06-21T08:38:15.1310691Z       }
2026-06-21T08:38:15.1310767Z     },
2026-06-21T08:38:15.1310852Z     {
2026-06-21T08:38:15.1311067Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T08:38:15.1312451Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T08:38:15.1312653Z       "requiredStages": [],
2026-06-21T08:38:15.1312728Z       "stages": {
2026-06-21T08:38:15.1312814Z         "doc": {
2026-06-21T08:38:15.1312910Z           "complete": false,
2026-06-21T08:38:15.1312986Z           "evidence": []
2026-06-21T08:38:15.1313071Z         },
2026-06-21T08:38:15.1313157Z         "impl": {
2026-06-21T08:38:15.1313248Z           "complete": false,
2026-06-21T08:38:15.1313334Z           "evidence": []
2026-06-21T08:38:15.1313419Z         },
2026-06-21T08:38:15.1313502Z         "int": {
2026-06-21T08:38:15.1313587Z           "complete": false,
2026-06-21T08:38:15.1313677Z           "evidence": []
2026-06-21T08:38:15.1313758Z         },
2026-06-21T08:38:15.1313845Z         "unit": {
2026-06-21T08:38:15.1313934Z           "complete": false,
2026-06-21T08:38:15.1314025Z           "evidence": []
2026-06-21T08:38:15.1314097Z         }
2026-06-21T08:38:15.1314178Z       }
2026-06-21T08:38:15.1314249Z     },
2026-06-21T08:38:15.1314335Z     {
2026-06-21T08:38:15.1314436Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T08:38:15.1315546Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T08:38:15.1315649Z       "requiredStages": [
2026-06-21T08:38:15.1315737Z         "impl",
2026-06-21T08:38:15.1315822Z         "unit"
2026-06-21T08:38:15.1315908Z       ],
2026-06-21T08:38:15.1315993Z       "stages": {
2026-06-21T08:38:15.1316080Z         "doc": {
2026-06-21T08:38:15.1316170Z           "complete": false,
2026-06-21T08:38:15.1316270Z           "evidence": []
2026-06-21T08:38:15.1316351Z         },
2026-06-21T08:38:15.1316437Z         "impl": {
2026-06-21T08:38:15.1316522Z           "complete": true,
2026-06-21T08:38:15.1316599Z           "evidence": [
2026-06-21T08:38:15.1316686Z             {
2026-06-21T08:38:15.1316800Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1316895Z               "line": 275
2026-06-21T08:38:15.1316976Z             }
2026-06-21T08:38:15.1317063Z           ]
2026-06-21T08:38:15.1317147Z         },
2026-06-21T08:38:15.1317227Z         "int": {
2026-06-21T08:38:15.1317318Z           "complete": false,
2026-06-21T08:38:15.1317404Z           "evidence": []
2026-06-21T08:38:15.1317492Z         },
2026-06-21T08:38:15.1317577Z         "unit": {
2026-06-21T08:38:15.1317668Z           "complete": true,
2026-06-21T08:38:15.1317755Z           "evidence": [
2026-06-21T08:38:15.1317840Z             {
2026-06-21T08:38:15.1317954Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1318046Z               "line": 400
2026-06-21T08:38:15.1318126Z             }
2026-06-21T08:38:15.1318211Z           ]
2026-06-21T08:38:15.1318303Z         }
2026-06-21T08:38:15.1318389Z       }
2026-06-21T08:38:15.1318460Z     },
2026-06-21T08:38:15.1318545Z     {
2026-06-21T08:38:15.1318637Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T08:38:15.1320266Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T08:38:15.1320584Z       "requiredStages": [
2026-06-21T08:38:15.1320665Z         "impl",
2026-06-21T08:38:15.1320750Z         "unit"
2026-06-21T08:38:15.1320826Z       ],
2026-06-21T08:38:15.1320913Z       "stages": {
2026-06-21T08:38:15.1320994Z         "doc": {
2026-06-21T08:38:15.1321079Z           "complete": false,
2026-06-21T08:38:15.1321165Z           "evidence": []
2026-06-21T08:38:15.1321247Z         },
2026-06-21T08:38:15.1321332Z         "impl": {
2026-06-21T08:38:15.1321417Z           "complete": true,
2026-06-21T08:38:15.1321499Z           "evidence": [
2026-06-21T08:38:15.1321580Z             {
2026-06-21T08:38:15.1321689Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1321780Z               "line": 654
2026-06-21T08:38:15.1321858Z             }
2026-06-21T08:38:15.1321937Z           ]
2026-06-21T08:38:15.1322023Z         },
2026-06-21T08:38:15.1322105Z         "int": {
2026-06-21T08:38:15.1322196Z           "complete": false,
2026-06-21T08:38:15.1322280Z           "evidence": []
2026-06-21T08:38:15.1322362Z         },
2026-06-21T08:38:15.1322444Z         "unit": {
2026-06-21T08:38:15.1322534Z           "complete": true,
2026-06-21T08:38:15.1322623Z           "evidence": [
2026-06-21T08:38:15.1322703Z             {
2026-06-21T08:38:15.1322814Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1325744Z               "line": 1078
2026-06-21T08:38:15.1325838Z             },
2026-06-21T08:38:15.1325924Z             {
2026-06-21T08:38:15.1326054Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1326143Z               "line": 1092
2026-06-21T08:38:15.1326233Z             }
2026-06-21T08:38:15.1326316Z           ]
2026-06-21T08:38:15.1326401Z         }
2026-06-21T08:38:15.1326496Z       }
2026-06-21T08:38:15.1326582Z     },
2026-06-21T08:38:15.1326664Z     {
2026-06-21T08:38:15.1326763Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T08:38:15.1328414Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T08:38:15.1328514Z       "requiredStages": [],
2026-06-21T08:38:15.1328592Z       "stages": {
2026-06-21T08:38:15.1328677Z         "doc": {
2026-06-21T08:38:15.1328762Z           "complete": false,
2026-06-21T08:38:15.1328854Z           "evidence": []
2026-06-21T08:38:15.1329049Z         },
2026-06-21T08:38:15.1329130Z         "impl": {
2026-06-21T08:38:15.1329221Z           "complete": false,
2026-06-21T08:38:15.1329311Z           "evidence": []
2026-06-21T08:38:15.1329425Z         },
2026-06-21T08:38:15.1329507Z         "int": {
2026-06-21T08:38:15.1329611Z           "complete": false,
2026-06-21T08:38:15.1329702Z           "evidence": []
2026-06-21T08:38:15.1329778Z         },
2026-06-21T08:38:15.1329865Z         "unit": {
2026-06-21T08:38:15.1329950Z           "complete": false,
2026-06-21T08:38:15.1330031Z           "evidence": []
2026-06-21T08:38:15.1330113Z         }
2026-06-21T08:38:15.1330184Z       }
2026-06-21T08:38:15.1330269Z     },
2026-06-21T08:38:15.1330350Z     {
2026-06-21T08:38:15.1330437Z       "id": "REQ-PRES-1",
2026-06-21T08:38:15.1331754Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T08:38:15.1332079Z       "requiredStages": [
2026-06-21T08:38:15.1332168Z         "impl",
2026-06-21T08:38:15.1332245Z         "unit",
2026-06-21T08:38:15.1332330Z         "int"
2026-06-21T08:38:15.1332413Z       ],
2026-06-21T08:38:15.1332492Z       "stages": {
2026-06-21T08:38:15.1332578Z         "doc": {
2026-06-21T08:38:15.1332660Z           "complete": true,
2026-06-21T08:38:15.1332742Z           "evidence": [
2026-06-21T08:38:15.1332812Z             {
2026-06-21T08:38:15.1332917Z               "path": "docs/DEFERRED.md",
2026-06-21T08:38:15.1333004Z               "line": 11
2026-06-21T08:38:15.1333085Z             }
2026-06-21T08:38:15.1333155Z           ]
2026-06-21T08:38:15.1333240Z         },
2026-06-21T08:38:15.1333322Z         "impl": {
2026-06-21T08:38:15.1333417Z           "complete": true,
2026-06-21T08:38:15.1333505Z           "evidence": [
2026-06-21T08:38:15.1333581Z             {
2026-06-21T08:38:15.1333706Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1333796Z               "line": 515
2026-06-21T08:38:15.1333881Z             },
2026-06-21T08:38:15.1333968Z             {
2026-06-21T08:38:15.1334082Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1334167Z               "line": 567
2026-06-21T08:38:15.1334248Z             },
2026-06-21T08:38:15.1334336Z             {
2026-06-21T08:38:15.1334445Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1334530Z               "line": 188
2026-06-21T08:38:15.1334617Z             },
2026-06-21T08:38:15.1334697Z             {
2026-06-21T08:38:15.1334816Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1334892Z               "line": 214
2026-06-21T08:38:15.1334980Z             },
2026-06-21T08:38:15.1335064Z             {
2026-06-21T08:38:15.1335174Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1335261Z               "line": 28
2026-06-21T08:38:15.1335341Z             },
2026-06-21T08:38:15.1335417Z             {
2026-06-21T08:38:15.1335527Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1335619Z               "line": 105
2026-06-21T08:38:15.1335688Z             },
2026-06-21T08:38:15.1335765Z             {
2026-06-21T08:38:15.1335885Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1335962Z               "line": 161
2026-06-21T08:38:15.1336045Z             },
2026-06-21T08:38:15.1336121Z             {
2026-06-21T08:38:15.1336246Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1336323Z               "line": 180
2026-06-21T08:38:15.1336408Z             },
2026-06-21T08:38:15.1336489Z             {
2026-06-21T08:38:15.1336614Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1336708Z               "line": 421
2026-06-21T08:38:15.1336788Z             },
2026-06-21T08:38:15.1336876Z             {
2026-06-21T08:38:15.1337004Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1337090Z               "line": 289
2026-06-21T08:38:15.1337181Z             },
2026-06-21T08:38:15.1337262Z             {
2026-06-21T08:38:15.1337380Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1337462Z               "line": 336
2026-06-21T08:38:15.1337548Z             },
2026-06-21T08:38:15.1337624Z             {
2026-06-21T08:38:15.1337738Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1337821Z               "line": 362
2026-06-21T08:38:15.1337901Z             },
2026-06-21T08:38:15.1337986Z             {
2026-06-21T08:38:15.1338086Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1338173Z               "line": 100
2026-06-21T08:38:15.1338333Z             }
2026-06-21T08:38:15.1338419Z           ]
2026-06-21T08:38:15.1338500Z         },
2026-06-21T08:38:15.1338650Z         "int": {
2026-06-21T08:38:15.1338745Z           "complete": true,
2026-06-21T08:38:15.1338822Z           "evidence": [
2026-06-21T08:38:15.1338904Z             {
2026-06-21T08:38:15.1339118Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1339199Z               "line": 563
2026-06-21T08:38:15.1339289Z             },
2026-06-21T08:38:15.1339360Z             {
2026-06-21T08:38:15.1339486Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1339571Z               "line": 747
2026-06-21T08:38:15.1339646Z             },
2026-06-21T08:38:15.1339719Z             {
2026-06-21T08:38:15.1339833Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1339919Z               "line": 1165
2026-06-21T08:38:15.1340005Z             }
2026-06-21T08:38:15.1340086Z           ]
2026-06-21T08:38:15.1340172Z         },
2026-06-21T08:38:15.1340262Z         "unit": {
2026-06-21T08:38:15.1340353Z           "complete": true,
2026-06-21T08:38:15.1340444Z           "evidence": [
2026-06-21T08:38:15.1340524Z             {
2026-06-21T08:38:15.1340629Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1340712Z               "line": 674
2026-06-21T08:38:15.1340796Z             },
2026-06-21T08:38:15.1340877Z             {
2026-06-21T08:38:15.1341002Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1341083Z               "line": 238
2026-06-21T08:38:15.1341168Z             },
2026-06-21T08:38:15.1341248Z             {
2026-06-21T08:38:15.1341358Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1341452Z               "line": 269
2026-06-21T08:38:15.1341522Z             },
2026-06-21T08:38:15.1341608Z             {
2026-06-21T08:38:15.1341714Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1341799Z               "line": 305
2026-06-21T08:38:15.1341879Z             },
2026-06-21T08:38:15.1341961Z             {
2026-06-21T08:38:15.1342066Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T08:38:15.1342142Z               "line": 336
2026-06-21T08:38:15.1342227Z             },
2026-06-21T08:38:15.1342310Z             {
2026-06-21T08:38:15.1342434Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1342523Z               "line": 1217
2026-06-21T08:38:15.1342605Z             },
2026-06-21T08:38:15.1342687Z             {
2026-06-21T08:38:15.1342800Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1342886Z               "line": 1163
2026-06-21T08:38:15.1342973Z             }
2026-06-21T08:38:15.1343058Z           ]
2026-06-21T08:38:15.1343139Z         }
2026-06-21T08:38:15.1343220Z       }
2026-06-21T08:38:15.1343302Z     },
2026-06-21T08:38:15.1343382Z     {
2026-06-21T08:38:15.1343472Z       "id": "REQ-RC-1",
2026-06-21T08:38:15.1345477Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T08:38:15.1345582Z       "requiredStages": [
2026-06-21T08:38:15.1345668Z         "impl",
2026-06-21T08:38:15.1345749Z         "unit",
2026-06-21T08:38:15.1345830Z         "int"
2026-06-21T08:38:15.1345901Z       ],
2026-06-21T08:38:15.1345987Z       "stages": {
2026-06-21T08:38:15.1346068Z         "doc": {
2026-06-21T08:38:15.1346272Z           "complete": false,
2026-06-21T08:38:15.1346363Z           "evidence": []
2026-06-21T08:38:15.1346536Z         },
2026-06-21T08:38:15.1346625Z         "impl": {
2026-06-21T08:38:15.1346710Z           "complete": true,
2026-06-21T08:38:15.1346801Z           "evidence": [
2026-06-21T08:38:15.1346874Z             {
2026-06-21T08:38:15.1346987Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.1347068Z               "line": 944
2026-06-21T08:38:15.1347140Z             },
2026-06-21T08:38:15.1347226Z             {
2026-06-21T08:38:15.1347335Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1347427Z               "line": 2060
2026-06-21T08:38:15.1347502Z             },
2026-06-21T08:38:15.1347592Z             {
2026-06-21T08:38:15.1347731Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1347817Z               "line": 1017
2026-06-21T08:38:15.1347893Z             },
2026-06-21T08:38:15.1347979Z             {
2026-06-21T08:38:15.1348085Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1348169Z               "line": 1051
2026-06-21T08:38:15.1348250Z             },
2026-06-21T08:38:15.1348327Z             {
2026-06-21T08:38:15.1348423Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1348512Z               "line": 22
2026-06-21T08:38:15.1348594Z             },
2026-06-21T08:38:15.1348676Z             {
2026-06-21T08:38:15.1348780Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1348856Z               "line": 701
2026-06-21T08:38:15.1349017Z             }
2026-06-21T08:38:15.1349102Z           ]
2026-06-21T08:38:15.1349182Z         },
2026-06-21T08:38:15.1349267Z         "int": {
2026-06-21T08:38:15.1349364Z           "complete": true,
2026-06-21T08:38:15.1349445Z           "evidence": [
2026-06-21T08:38:15.1349530Z             {
2026-06-21T08:38:15.1349649Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1349736Z               "line": 258
2026-06-21T08:38:15.1349811Z             },
2026-06-21T08:38:15.1349896Z             {
2026-06-21T08:38:15.1350022Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1350107Z               "line": 285
2026-06-21T08:38:15.1350188Z             },
2026-06-21T08:38:15.1350269Z             {
2026-06-21T08:38:15.1350379Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1350464Z               "line": 413
2026-06-21T08:38:15.1350550Z             }
2026-06-21T08:38:15.1350633Z           ]
2026-06-21T08:38:15.1350717Z         },
2026-06-21T08:38:15.1350798Z         "unit": {
2026-06-21T08:38:15.1350889Z           "complete": true,
2026-06-21T08:38:15.1350962Z           "evidence": [
2026-06-21T08:38:15.1351041Z             {
2026-06-21T08:38:15.1351146Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1351238Z               "line": 1415
2026-06-21T08:38:15.1351319Z             },
2026-06-21T08:38:15.1351399Z             {
2026-06-21T08:38:15.1351504Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1351587Z               "line": 1133
2026-06-21T08:38:15.1351671Z             },
2026-06-21T08:38:15.1351756Z             {
2026-06-21T08:38:15.1351856Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1351946Z               "line": 1162
2026-06-21T08:38:15.1352026Z             },
2026-06-21T08:38:15.1352115Z             {
2026-06-21T08:38:15.1352211Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1352298Z               "line": 1175
2026-06-21T08:38:15.1352378Z             }
2026-06-21T08:38:15.1352463Z           ]
2026-06-21T08:38:15.1352546Z         }
2026-06-21T08:38:15.1352622Z       }
2026-06-21T08:38:15.1352707Z     },
2026-06-21T08:38:15.1352787Z     {
2026-06-21T08:38:15.1352894Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T08:38:15.1358602Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T08:38:15.1358921Z       "requiredStages": [
2026-06-21T08:38:15.1359096Z         "doc",
2026-06-21T08:38:15.1359178Z         "impl",
2026-06-21T08:38:15.1359265Z         "unit"
2026-06-21T08:38:15.1359359Z       ],
2026-06-21T08:38:15.1359444Z       "stages": {
2026-06-21T08:38:15.1359534Z         "doc": {
2026-06-21T08:38:15.1359621Z           "complete": true,
2026-06-21T08:38:15.1359704Z           "evidence": [
2026-06-21T08:38:15.1359785Z             {
2026-06-21T08:38:15.1359885Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1359967Z               "line": 345
2026-06-21T08:38:15.1360047Z             },
2026-06-21T08:38:15.1360123Z             {
2026-06-21T08:38:15.1360233Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.1360329Z               "line": 440
2026-06-21T08:38:15.1360409Z             }
2026-06-21T08:38:15.1360485Z           ]
2026-06-21T08:38:15.1360573Z         },
2026-06-21T08:38:15.1360653Z         "impl": {
2026-06-21T08:38:15.1360748Z           "complete": true,
2026-06-21T08:38:15.1360834Z           "evidence": [
2026-06-21T08:38:15.1360920Z             {
2026-06-21T08:38:15.1361024Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1361110Z               "line": 226
2026-06-21T08:38:15.1361193Z             },
2026-06-21T08:38:15.1361272Z             {
2026-06-21T08:38:15.1361377Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1361464Z               "line": 285
2026-06-21T08:38:15.1361531Z             },
2026-06-21T08:38:15.1361611Z             {
2026-06-21T08:38:15.1361706Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1361788Z               "line": 300
2026-06-21T08:38:15.1361874Z             },
2026-06-21T08:38:15.1361954Z             {
2026-06-21T08:38:15.1362050Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1362137Z               "line": 315
2026-06-21T08:38:15.1362222Z             },
2026-06-21T08:38:15.1362297Z             {
2026-06-21T08:38:15.1362396Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1362478Z               "line": 364
2026-06-21T08:38:15.1362558Z             }
2026-06-21T08:38:15.1362643Z           ]
2026-06-21T08:38:15.1362819Z         },
2026-06-21T08:38:15.1362905Z         "int": {
2026-06-21T08:38:15.1362990Z           "complete": false,
2026-06-21T08:38:15.1363173Z           "evidence": []
2026-06-21T08:38:15.1363248Z         },
2026-06-21T08:38:15.1363333Z         "unit": {
2026-06-21T08:38:15.1363416Z           "complete": true,
2026-06-21T08:38:15.1363501Z           "evidence": [
2026-06-21T08:38:15.1363591Z             {
2026-06-21T08:38:15.1363692Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1363783Z               "line": 1190
2026-06-21T08:38:15.1363854Z             },
2026-06-21T08:38:15.1363940Z             {
2026-06-21T08:38:15.1364030Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1364116Z               "line": 1305
2026-06-21T08:38:15.1364202Z             }
2026-06-21T08:38:15.1364283Z           ]
2026-06-21T08:38:15.1364365Z         }
2026-06-21T08:38:15.1364451Z       }
2026-06-21T08:38:15.1364535Z     },
2026-06-21T08:38:15.1364616Z     {
2026-06-21T08:38:15.1364709Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T08:38:15.1369056Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T08:38:15.1369167Z       "requiredStages": [
2026-06-21T08:38:15.1369248Z         "doc",
2026-06-21T08:38:15.1369323Z         "impl",
2026-06-21T08:38:15.1369418Z         "unit"
2026-06-21T08:38:15.1369496Z       ],
2026-06-21T08:38:15.1369591Z       "stages": {
2026-06-21T08:38:15.1369671Z         "doc": {
2026-06-21T08:38:15.1369767Z           "complete": true,
2026-06-21T08:38:15.1369844Z           "evidence": [
2026-06-21T08:38:15.1369929Z             {
2026-06-21T08:38:15.1370047Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.1370133Z               "line": 461
2026-06-21T08:38:15.1370223Z             }
2026-06-21T08:38:15.1370307Z           ]
2026-06-21T08:38:15.1370387Z         },
2026-06-21T08:38:15.1370469Z         "impl": {
2026-06-21T08:38:15.1370566Z           "complete": true,
2026-06-21T08:38:15.1370664Z           "evidence": [
2026-06-21T08:38:15.1370741Z             {
2026-06-21T08:38:15.1370841Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1370922Z               "line": 421
2026-06-21T08:38:15.1371012Z             },
2026-06-21T08:38:15.1371089Z             {
2026-06-21T08:38:15.1371194Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1371284Z               "line": 437
2026-06-21T08:38:15.1371360Z             }
2026-06-21T08:38:15.1371448Z           ]
2026-06-21T08:38:15.1371533Z         },
2026-06-21T08:38:15.1371618Z         "int": {
2026-06-21T08:38:15.1371709Z           "complete": false,
2026-06-21T08:38:15.1371895Z           "evidence": []
2026-06-21T08:38:15.1371981Z         },
2026-06-21T08:38:15.1372138Z         "unit": {
2026-06-21T08:38:15.1372228Z           "complete": true,
2026-06-21T08:38:15.1372314Z           "evidence": [
2026-06-21T08:38:15.1372402Z             {
2026-06-21T08:38:15.1372500Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1372586Z               "line": 1440
2026-06-21T08:38:15.1372673Z             },
2026-06-21T08:38:15.1372754Z             {
2026-06-21T08:38:15.1372857Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1372937Z               "line": 1459
2026-06-21T08:38:15.1373024Z             },
2026-06-21T08:38:15.1373095Z             {
2026-06-21T08:38:15.1373198Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1373288Z               "line": 1471
2026-06-21T08:38:15.1373365Z             },
2026-06-21T08:38:15.1373447Z             {
2026-06-21T08:38:15.1373536Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1373637Z               "line": 1499
2026-06-21T08:38:15.1373718Z             }
2026-06-21T08:38:15.1373808Z           ]
2026-06-21T08:38:15.1373894Z         }
2026-06-21T08:38:15.1373971Z       }
2026-06-21T08:38:15.1374047Z     },
2026-06-21T08:38:15.1374128Z     {
2026-06-21T08:38:15.1374227Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T08:38:15.1378892Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T08:38:15.1379093Z       "requiredStages": [
2026-06-21T08:38:15.1379183Z         "doc",
2026-06-21T08:38:15.1379264Z         "impl",
2026-06-21T08:38:15.1379378Z         "unit"
2026-06-21T08:38:15.1379460Z       ],
2026-06-21T08:38:15.1379544Z       "stages": {
2026-06-21T08:38:15.1379635Z         "doc": {
2026-06-21T08:38:15.1379727Z           "complete": true,
2026-06-21T08:38:15.1379818Z           "evidence": [
2026-06-21T08:38:15.1379898Z             {
2026-06-21T08:38:15.1380012Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T08:38:15.1380109Z               "line": 447
2026-06-21T08:38:15.1380193Z             }
2026-06-21T08:38:15.1380274Z           ]
2026-06-21T08:38:15.1380356Z         },
2026-06-21T08:38:15.1380442Z         "impl": {
2026-06-21T08:38:15.1380531Z           "complete": true,
2026-06-21T08:38:15.1380626Z           "evidence": [
2026-06-21T08:38:15.1380707Z             {
2026-06-21T08:38:15.1380811Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1380891Z               "line": 395
2026-06-21T08:38:15.1381078Z             },
2026-06-21T08:38:15.1381163Z             {
2026-06-21T08:38:15.1381263Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1381444Z               "line": 411
2026-06-21T08:38:15.1381529Z             },
2026-06-21T08:38:15.1381610Z             {
2026-06-21T08:38:15.1381703Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1381783Z               "line": 454
2026-06-21T08:38:15.1381868Z             },
2026-06-21T08:38:15.1381955Z             {
2026-06-21T08:38:15.1382055Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1382150Z               "line": 468
2026-06-21T08:38:15.1382226Z             },
2026-06-21T08:38:15.1382313Z             {
2026-06-21T08:38:15.1382412Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1382497Z               "line": 479
2026-06-21T08:38:15.1382584Z             }
2026-06-21T08:38:15.1382666Z           ]
2026-06-21T08:38:15.1382755Z         },
2026-06-21T08:38:15.1382846Z         "int": {
2026-06-21T08:38:15.1382937Z           "complete": false,
2026-06-21T08:38:15.1383018Z           "evidence": []
2026-06-21T08:38:15.1383103Z         },
2026-06-21T08:38:15.1383175Z         "unit": {
2026-06-21T08:38:15.1383257Z           "complete": true,
2026-06-21T08:38:15.1383342Z           "evidence": [
2026-06-21T08:38:15.1383427Z             {
2026-06-21T08:38:15.1383531Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1383617Z               "line": 1381
2026-06-21T08:38:15.1383701Z             },
2026-06-21T08:38:15.1383777Z             {
2026-06-21T08:38:15.1383873Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1383959Z               "line": 1402
2026-06-21T08:38:15.1384040Z             },
2026-06-21T08:38:15.1384125Z             {
2026-06-21T08:38:15.1384221Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1384307Z               "line": 1423
2026-06-21T08:38:15.1384387Z             }
2026-06-21T08:38:15.1384463Z           ]
2026-06-21T08:38:15.1384551Z         }
2026-06-21T08:38:15.1384636Z       }
2026-06-21T08:38:15.1384716Z     },
2026-06-21T08:38:15.1384802Z     {
2026-06-21T08:38:15.1384899Z       "id": "REQ-RCVIEW-1",
2026-06-21T08:38:15.1389415Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T08:38:15.1389533Z       "requiredStages": [
2026-06-21T08:38:15.1389609Z         "doc",
2026-06-21T08:38:15.1389696Z         "impl",
2026-06-21T08:38:15.1389771Z         "unit",
2026-06-21T08:38:15.1389852Z         "int"
2026-06-21T08:38:15.1389938Z       ],
2026-06-21T08:38:15.1390144Z       "stages": {
2026-06-21T08:38:15.1390219Z         "doc": {
2026-06-21T08:38:15.1390306Z           "complete": true,
2026-06-21T08:38:15.1390501Z           "evidence": [
2026-06-21T08:38:15.1390582Z             {
2026-06-21T08:38:15.1390678Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1390767Z               "line": 342
2026-06-21T08:38:15.1390848Z             }
2026-06-21T08:38:15.1390926Z           ]
2026-06-21T08:38:15.1391007Z         },
2026-06-21T08:38:15.1391087Z         "impl": {
2026-06-21T08:38:15.1391182Z           "complete": true,
2026-06-21T08:38:15.1391272Z           "evidence": [
2026-06-21T08:38:15.1391348Z             {
2026-06-21T08:38:15.1391460Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T08:38:15.1391551Z               "line": 375
2026-06-21T08:38:15.1391638Z             },
2026-06-21T08:38:15.1391718Z             {
2026-06-21T08:38:15.1391832Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1391914Z               "line": 622
2026-06-21T08:38:15.1392004Z             },
2026-06-21T08:38:15.1392085Z             {
2026-06-21T08:38:15.1392205Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1392291Z               "line": 633
2026-06-21T08:38:15.1392376Z             },
2026-06-21T08:38:15.1392457Z             {
2026-06-21T08:38:15.1392568Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.1392653Z               "line": 41
2026-06-21T08:38:15.1392733Z             },
2026-06-21T08:38:15.1392814Z             {
2026-06-21T08:38:15.1392935Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.1393020Z               "line": 62
2026-06-21T08:38:15.1393101Z             },
2026-06-21T08:38:15.1393183Z             {
2026-06-21T08:38:15.1393301Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.1393386Z               "line": 309
2026-06-21T08:38:15.1393474Z             },
2026-06-21T08:38:15.1393560Z             {
2026-06-21T08:38:15.1393653Z               "path": "crates/spt/src/rc.rs",
2026-06-21T08:38:15.1393745Z               "line": 701
2026-06-21T08:38:15.1393832Z             }
2026-06-21T08:38:15.1393917Z           ]
2026-06-21T08:38:15.1394001Z         },
2026-06-21T08:38:15.1394086Z         "int": {
2026-06-21T08:38:15.1394187Z           "complete": true,
2026-06-21T08:38:15.1394271Z           "evidence": [
2026-06-21T08:38:15.1394356Z             {
2026-06-21T08:38:15.1394476Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1394562Z               "line": 913
2026-06-21T08:38:15.1394647Z             },
2026-06-21T08:38:15.1394723Z             {
2026-06-21T08:38:15.1394848Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1394929Z               "line": 953
2026-06-21T08:38:15.1395019Z             },
2026-06-21T08:38:15.1395101Z             {
2026-06-21T08:38:15.1395215Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1395309Z               "line": 1000
2026-06-21T08:38:15.1395396Z             },
2026-06-21T08:38:15.1395478Z             {
2026-06-21T08:38:15.1395591Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1395682Z               "line": 1112
2026-06-21T08:38:15.1395764Z             }
2026-06-21T08:38:15.1395848Z           ]
2026-06-21T08:38:15.1395929Z         },
2026-06-21T08:38:15.1396016Z         "unit": {
2026-06-21T08:38:15.1396108Z           "complete": true,
2026-06-21T08:38:15.1396196Z           "evidence": [
2026-06-21T08:38:15.1396283Z             {
2026-06-21T08:38:15.1396399Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.1396492Z               "line": 175
2026-06-21T08:38:15.1396578Z             },
2026-06-21T08:38:15.1396653Z             {
2026-06-21T08:38:15.1396768Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T08:38:15.1396856Z               "line": 195
2026-06-21T08:38:15.1396946Z             }
2026-06-21T08:38:15.1397023Z           ]
2026-06-21T08:38:15.1397190Z         }
2026-06-21T08:38:15.1397275Z       }
2026-06-21T08:38:15.1397353Z     },
2026-06-21T08:38:15.1397514Z     {
2026-06-21T08:38:15.1397604Z       "id": "REQ-REACH-1",
2026-06-21T08:38:15.1397758Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T08:38:15.1397852Z       "requiredStages": [
2026-06-21T08:38:15.1397944Z         "impl",
2026-06-21T08:38:15.1398030Z         "unit",
2026-06-21T08:38:15.1398115Z         "int"
2026-06-21T08:38:15.1398201Z       ],
2026-06-21T08:38:15.1398282Z       "stages": {
2026-06-21T08:38:15.1398373Z         "doc": {
2026-06-21T08:38:15.1398468Z           "complete": false,
2026-06-21T08:38:15.1398563Z           "evidence": []
2026-06-21T08:38:15.1398655Z         },
2026-06-21T08:38:15.1398735Z         "impl": {
2026-06-21T08:38:15.1398825Z           "complete": true,
2026-06-21T08:38:15.1398912Z           "evidence": [
2026-06-21T08:38:15.1399054Z             {
2026-06-21T08:38:15.1399164Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1399266Z               "line": 622
2026-06-21T08:38:15.1399350Z             },
2026-06-21T08:38:15.1399440Z             {
2026-06-21T08:38:15.1399554Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.1399636Z               "line": 76
2026-06-21T08:38:15.1399721Z             },
2026-06-21T08:38:15.1399806Z             {
2026-06-21T08:38:15.1399922Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.1400003Z               "line": 222
2026-06-21T08:38:15.1400088Z             },
2026-06-21T08:38:15.1400164Z             {
2026-06-21T08:38:15.1400270Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.1400361Z               "line": 422
2026-06-21T08:38:15.1400436Z             },
2026-06-21T08:38:15.1400517Z             {
2026-06-21T08:38:15.1400632Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.1400718Z               "line": 529
2026-06-21T08:38:15.1400798Z             },
2026-06-21T08:38:15.1400881Z             {
2026-06-21T08:38:15.1400990Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T08:38:15.1401075Z               "line": 39
2026-06-21T08:38:15.1401152Z             },
2026-06-21T08:38:15.1401238Z             {
2026-06-21T08:38:15.1401346Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.1401433Z               "line": 301
2026-06-21T08:38:15.1401511Z             },
2026-06-21T08:38:15.1401596Z             {
2026-06-21T08:38:15.1401703Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T08:38:15.1401784Z               "line": 88
2026-06-21T08:38:15.1401865Z             },
2026-06-21T08:38:15.1401945Z             {
2026-06-21T08:38:15.1402049Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T08:38:15.1402140Z               "line": 98
2026-06-21T08:38:15.1402217Z             },
2026-06-21T08:38:15.1402302Z             {
2026-06-21T08:38:15.1402426Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1402522Z               "line": 233
2026-06-21T08:38:15.1402598Z             }
2026-06-21T08:38:15.1402692Z           ]
2026-06-21T08:38:15.1402770Z         },
2026-06-21T08:38:15.1402856Z         "int": {
2026-06-21T08:38:15.1402936Z           "complete": true,
2026-06-21T08:38:15.1403026Z           "evidence": [
2026-06-21T08:38:15.1403109Z             {
2026-06-21T08:38:15.1403227Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1403322Z               "line": 415
2026-06-21T08:38:15.1403399Z             },
2026-06-21T08:38:15.1403485Z             {
2026-06-21T08:38:15.1403609Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1403690Z               "line": 520
2026-06-21T08:38:15.1403776Z             },
2026-06-21T08:38:15.1403857Z             {
2026-06-21T08:38:15.1403975Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1404058Z               "line": 998
2026-06-21T08:38:15.1404248Z             },
2026-06-21T08:38:15.1404324Z             {
2026-06-21T08:38:15.1404449Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1404628Z               "line": 1383
2026-06-21T08:38:15.1404713Z             }
2026-06-21T08:38:15.1404799Z           ]
2026-06-21T08:38:15.1404883Z         },
2026-06-21T08:38:15.1404973Z         "unit": {
2026-06-21T08:38:15.1405060Z           "complete": true,
2026-06-21T08:38:15.1405151Z           "evidence": [
2026-06-21T08:38:15.1405235Z             {
2026-06-21T08:38:15.1405341Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.1405422Z               "line": 639
2026-06-21T08:38:15.1405512Z             },
2026-06-21T08:38:15.1405593Z             {
2026-06-21T08:38:15.1405699Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T08:38:15.1405780Z               "line": 660
2026-06-21T08:38:15.1405869Z             },
2026-06-21T08:38:15.1405951Z             {
2026-06-21T08:38:15.1406075Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T08:38:15.1406161Z               "line": 768
2026-06-21T08:38:15.1406256Z             },
2026-06-21T08:38:15.1406339Z             {
2026-06-21T08:38:15.1406451Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T08:38:15.1406533Z               "line": 93
2026-06-21T08:38:15.1406620Z             },
2026-06-21T08:38:15.1406701Z             {
2026-06-21T08:38:15.1406814Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T08:38:15.1406901Z               "line": 224
2026-06-21T08:38:15.1406983Z             },
2026-06-21T08:38:15.1407057Z             {
2026-06-21T08:38:15.1407161Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T08:38:15.1407247Z               "line": 96
2026-06-21T08:38:15.1407328Z             },
2026-06-21T08:38:15.1407407Z             {
2026-06-21T08:38:15.1407525Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T08:38:15.1407622Z               "line": 146
2026-06-21T08:38:15.1407703Z             },
2026-06-21T08:38:15.1407788Z             {
2026-06-21T08:38:15.1407889Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.1407989Z               "line": 698
2026-06-21T08:38:15.1408069Z             },
2026-06-21T08:38:15.1408150Z             {
2026-06-21T08:38:15.1408252Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T08:38:15.1408332Z               "line": 118
2026-06-21T08:38:15.1408422Z             },
2026-06-21T08:38:15.1408499Z             {
2026-06-21T08:38:15.1408618Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T08:38:15.1408704Z               "line": 148
2026-06-21T08:38:15.1408785Z             },
2026-06-21T08:38:15.1408872Z             {
2026-06-21T08:38:15.1409071Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1409162Z               "line": 928
2026-06-21T08:38:15.1412071Z             }
2026-06-21T08:38:15.1412178Z           ]
2026-06-21T08:38:15.1412259Z         }
2026-06-21T08:38:15.1412359Z       }
2026-06-21T08:38:15.1412449Z     },
2026-06-21T08:38:15.1412524Z     {
2026-06-21T08:38:15.1412633Z       "id": "REQ-REACH-2",
2026-06-21T08:38:15.1412796Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T08:38:15.1412900Z       "requiredStages": [],
2026-06-21T08:38:15.1412981Z       "stages": {
2026-06-21T08:38:15.1413068Z         "doc": {
2026-06-21T08:38:15.1413163Z           "complete": false,
2026-06-21T08:38:15.1413248Z           "evidence": []
2026-06-21T08:38:15.1413320Z         },
2026-06-21T08:38:15.1413407Z         "impl": {
2026-06-21T08:38:15.1413501Z           "complete": false,
2026-06-21T08:38:15.1413581Z           "evidence": []
2026-06-21T08:38:15.1413669Z         },
2026-06-21T08:38:15.1413754Z         "int": {
2026-06-21T08:38:15.1413840Z           "complete": false,
2026-06-21T08:38:15.1413930Z           "evidence": []
2026-06-21T08:38:15.1414017Z         },
2026-06-21T08:38:15.1414102Z         "unit": {
2026-06-21T08:38:15.1414327Z           "complete": false,
2026-06-21T08:38:15.1414417Z           "evidence": []
2026-06-21T08:38:15.1414498Z         }
2026-06-21T08:38:15.1414656Z       }
2026-06-21T08:38:15.1414741Z     },
2026-06-21T08:38:15.1414818Z     {
2026-06-21T08:38:15.1414928Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T08:38:15.1418396Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T08:38:15.1418507Z       "requiredStages": [
2026-06-21T08:38:15.1418588Z         "doc",
2026-06-21T08:38:15.1418672Z         "impl",
2026-06-21T08:38:15.1418754Z         "unit",
2026-06-21T08:38:15.1418840Z         "int"
2026-06-21T08:38:15.1418921Z       ],
2026-06-21T08:38:15.1419146Z       "stages": {
2026-06-21T08:38:15.1419226Z         "doc": {
2026-06-21T08:38:15.1419316Z           "complete": true,
2026-06-21T08:38:15.1419432Z           "evidence": [
2026-06-21T08:38:15.1419512Z             {
2026-06-21T08:38:15.1419607Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1419698Z               "line": 372
2026-06-21T08:38:15.1419785Z             }
2026-06-21T08:38:15.1419864Z           ]
2026-06-21T08:38:15.1419945Z         },
2026-06-21T08:38:15.1420028Z         "impl": {
2026-06-21T08:38:15.1420123Z           "complete": true,
2026-06-21T08:38:15.1420203Z           "evidence": [
2026-06-21T08:38:15.1420280Z             {
2026-06-21T08:38:15.1420400Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1420489Z               "line": 110
2026-06-21T08:38:15.1420570Z             }
2026-06-21T08:38:15.1420655Z           ]
2026-06-21T08:38:15.1420742Z         },
2026-06-21T08:38:15.1420823Z         "int": {
2026-06-21T08:38:15.1420903Z           "complete": true,
2026-06-21T08:38:15.1420984Z           "evidence": [
2026-06-21T08:38:15.1421066Z             {
2026-06-21T08:38:15.1421198Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T08:38:15.1421284Z               "line": 26
2026-06-21T08:38:15.1421376Z             }
2026-06-21T08:38:15.1421462Z           ]
2026-06-21T08:38:15.1421551Z         },
2026-06-21T08:38:15.1421619Z         "unit": {
2026-06-21T08:38:15.1421705Z           "complete": true,
2026-06-21T08:38:15.1421790Z           "evidence": [
2026-06-21T08:38:15.1421871Z             {
2026-06-21T08:38:15.1421977Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T08:38:15.1422062Z               "line": 320
2026-06-21T08:38:15.1422148Z             }
2026-06-21T08:38:15.1422233Z           ]
2026-06-21T08:38:15.1422316Z         }
2026-06-21T08:38:15.1422396Z       }
2026-06-21T08:38:15.1422476Z     },
2026-06-21T08:38:15.1422567Z     {
2026-06-21T08:38:15.1422659Z       "id": "REQ-REL-1",
2026-06-21T08:38:15.1423033Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T08:38:15.1423127Z       "requiredStages": [
2026-06-21T08:38:15.1423342Z         "doc",
2026-06-21T08:38:15.1423418Z         "impl"
2026-06-21T08:38:15.1423503Z       ],
2026-06-21T08:38:15.1423680Z       "stages": {
2026-06-21T08:38:15.1423765Z         "doc": {
2026-06-21T08:38:15.1423846Z           "complete": true,
2026-06-21T08:38:15.1423928Z           "evidence": [
2026-06-21T08:38:15.1424014Z             {
2026-06-21T08:38:15.1424229Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T08:38:15.1424314Z               "line": 3
2026-06-21T08:38:15.1424400Z             }
2026-06-21T08:38:15.1424481Z           ]
2026-06-21T08:38:15.1424568Z         },
2026-06-21T08:38:15.1424653Z         "impl": {
2026-06-21T08:38:15.1424748Z           "complete": true,
2026-06-21T08:38:15.1424829Z           "evidence": [
2026-06-21T08:38:15.1424916Z             {
2026-06-21T08:38:15.1425044Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T08:38:15.1425130Z               "line": 11
2026-06-21T08:38:15.1425211Z             },
2026-06-21T08:38:15.1425291Z             {
2026-06-21T08:38:15.1425397Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1425473Z               "line": 265
2026-06-21T08:38:15.1425560Z             }
2026-06-21T08:38:15.1425644Z           ]
2026-06-21T08:38:15.1425724Z         },
2026-06-21T08:38:15.1425810Z         "int": {
2026-06-21T08:38:15.1425891Z           "complete": false,
2026-06-21T08:38:15.1425975Z           "evidence": []
2026-06-21T08:38:15.1426060Z         },
2026-06-21T08:38:15.1426147Z         "unit": {
2026-06-21T08:38:15.1426233Z           "complete": false,
2026-06-21T08:38:15.1426323Z           "evidence": []
2026-06-21T08:38:15.1426409Z         }
2026-06-21T08:38:15.1426486Z       }
2026-06-21T08:38:15.1426571Z     },
2026-06-21T08:38:15.1426647Z     {
2026-06-21T08:38:15.1426738Z       "id": "REQ-REL-2",
2026-06-21T08:38:15.1427219Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T08:38:15.1427310Z       "requiredStages": [
2026-06-21T08:38:15.1427396Z         "impl",
2026-06-21T08:38:15.1427473Z         "int"
2026-06-21T08:38:15.1427557Z       ],
2026-06-21T08:38:15.1427638Z       "stages": {
2026-06-21T08:38:15.1427721Z         "doc": {
2026-06-21T08:38:15.1427812Z           "complete": true,
2026-06-21T08:38:15.1427896Z           "evidence": [
2026-06-21T08:38:15.1427977Z             {
2026-06-21T08:38:15.1428083Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T08:38:15.1428169Z               "line": 6
2026-06-21T08:38:15.1428253Z             }
2026-06-21T08:38:15.1428338Z           ]
2026-06-21T08:38:15.1428424Z         },
2026-06-21T08:38:15.1428504Z         "impl": {
2026-06-21T08:38:15.1428589Z           "complete": true,
2026-06-21T08:38:15.1428670Z           "evidence": [
2026-06-21T08:38:15.1428752Z             {
2026-06-21T08:38:15.1428866Z               "path": ".github/workflows/release.yml",
2026-06-21T08:38:15.1429043Z               "line": 16
2026-06-21T08:38:15.1429128Z             },
2026-06-21T08:38:15.1429199Z             {
2026-06-21T08:38:15.1429304Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1429391Z               "line": 352
2026-06-21T08:38:15.1429477Z             },
2026-06-21T08:38:15.1429561Z             {
2026-06-21T08:38:15.1429667Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1429758Z               "line": 426
2026-06-21T08:38:15.1429834Z             },
2026-06-21T08:38:15.1429920Z             {
2026-06-21T08:38:15.1430011Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1430105Z               "line": 588
2026-06-21T08:38:15.1430186Z             },
2026-06-21T08:38:15.1430263Z             {
2026-06-21T08:38:15.1430369Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1430473Z               "line": 720
2026-06-21T08:38:15.1430549Z             }
2026-06-21T08:38:15.1430631Z           ]
2026-06-21T08:38:15.1430820Z         },
2026-06-21T08:38:15.1430903Z         "int": {
2026-06-21T08:38:15.1430989Z           "complete": true,
2026-06-21T08:38:15.1431168Z           "evidence": [
2026-06-21T08:38:15.1431239Z             {
2026-06-21T08:38:15.1431374Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T08:38:15.1431453Z               "line": 13
2026-06-21T08:38:15.1431539Z             }
2026-06-21T08:38:15.1431612Z           ]
2026-06-21T08:38:15.1431693Z         },
2026-06-21T08:38:15.1431778Z         "unit": {
2026-06-21T08:38:15.1431859Z           "complete": false,
2026-06-21T08:38:15.1431946Z           "evidence": []
2026-06-21T08:38:15.1432027Z         }
2026-06-21T08:38:15.1432102Z       }
2026-06-21T08:38:15.1432184Z     },
2026-06-21T08:38:15.1432270Z     {
2026-06-21T08:38:15.1432360Z       "id": "REQ-REL-3",
2026-06-21T08:38:15.1432784Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T08:38:15.1432886Z       "requiredStages": [
2026-06-21T08:38:15.1432965Z         "impl",
2026-06-21T08:38:15.1433051Z         "unit"
2026-06-21T08:38:15.1433127Z       ],
2026-06-21T08:38:15.1433205Z       "stages": {
2026-06-21T08:38:15.1433289Z         "doc": {
2026-06-21T08:38:15.1433370Z           "complete": false,
2026-06-21T08:38:15.1433455Z           "evidence": []
2026-06-21T08:38:15.1433537Z         },
2026-06-21T08:38:15.1433621Z         "impl": {
2026-06-21T08:38:15.1433701Z           "complete": true,
2026-06-21T08:38:15.1433787Z           "evidence": [
2026-06-21T08:38:15.1433873Z             {
2026-06-21T08:38:15.1433992Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1434072Z               "line": 237
2026-06-21T08:38:15.1434154Z             },
2026-06-21T08:38:15.1434231Z             {
2026-06-21T08:38:15.1434340Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1434426Z               "line": 289
2026-06-21T08:38:15.1434517Z             },
2026-06-21T08:38:15.1434593Z             {
2026-06-21T08:38:15.1434697Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1434785Z               "line": 329
2026-06-21T08:38:15.1434860Z             },
2026-06-21T08:38:15.1434945Z             {
2026-06-21T08:38:15.1435079Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1435170Z               "line": 353
2026-06-21T08:38:15.1435246Z             },
2026-06-21T08:38:15.1435332Z             {
2026-06-21T08:38:15.1435429Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1435513Z               "line": 394
2026-06-21T08:38:15.1435594Z             }
2026-06-21T08:38:15.1435675Z           ]
2026-06-21T08:38:15.1435753Z         },
2026-06-21T08:38:15.1435833Z         "int": {
2026-06-21T08:38:15.1435928Z           "complete": false,
2026-06-21T08:38:15.1436015Z           "evidence": []
2026-06-21T08:38:15.1436101Z         },
2026-06-21T08:38:15.1436190Z         "unit": {
2026-06-21T08:38:15.1436284Z           "complete": true,
2026-06-21T08:38:15.1436375Z           "evidence": [
2026-06-21T08:38:15.1436455Z             {
2026-06-21T08:38:15.1436569Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1436649Z               "line": 1045
2026-06-21T08:38:15.1436735Z             },
2026-06-21T08:38:15.1436822Z             {
2026-06-21T08:38:15.1436930Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1437017Z               "line": 1104
2026-06-21T08:38:15.1437103Z             }
2026-06-21T08:38:15.1437188Z           ]
2026-06-21T08:38:15.1437254Z         }
2026-06-21T08:38:15.1437342Z       }
2026-06-21T08:38:15.1437422Z     },
2026-06-21T08:38:15.1437498Z     {
2026-06-21T08:38:15.1437593Z       "id": "REQ-RUN-PICKER",
2026-06-21T08:38:15.1442342Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T08:38:15.1442648Z       "requiredStages": [
2026-06-21T08:38:15.1442734Z         "doc",
2026-06-21T08:38:15.1442811Z         "impl",
2026-06-21T08:38:15.1442896Z         "unit"
2026-06-21T08:38:15.1442977Z       ],
2026-06-21T08:38:15.1443058Z       "stages": {
2026-06-21T08:38:15.1443141Z         "doc": {
2026-06-21T08:38:15.1443239Z           "complete": true,
2026-06-21T08:38:15.1443315Z           "evidence": [
2026-06-21T08:38:15.1443398Z             {
2026-06-21T08:38:15.1443493Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1443573Z               "line": 349
2026-06-21T08:38:15.1443664Z             }
2026-06-21T08:38:15.1443741Z           ]
2026-06-21T08:38:15.1443822Z         },
2026-06-21T08:38:15.1443911Z         "impl": {
2026-06-21T08:38:15.1443996Z           "complete": true,
2026-06-21T08:38:15.1444087Z           "evidence": [
2026-06-21T08:38:15.1444172Z             {
2026-06-21T08:38:15.1444271Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1444352Z               "line": 958
2026-06-21T08:38:15.1444438Z             },
2026-06-21T08:38:15.1444524Z             {
2026-06-21T08:38:15.1444628Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1444719Z               "line": 968
2026-06-21T08:38:15.1444800Z             },
2026-06-21T08:38:15.1444881Z             {
2026-06-21T08:38:15.1444996Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1445077Z               "line": 9
2026-06-21T08:38:15.1445158Z             },
2026-06-21T08:38:15.1445238Z             {
2026-06-21T08:38:15.1445349Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T08:38:15.1445434Z               "line": 67
2026-06-21T08:38:15.1445515Z             },
2026-06-21T08:38:15.1445596Z             {
2026-06-21T08:38:15.1445702Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T08:38:15.1445792Z               "line": 16
2026-06-21T08:38:15.1445858Z             },
2026-06-21T08:38:15.1445940Z             {
2026-06-21T08:38:15.1446045Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T08:38:15.1446130Z               "line": 254
2026-06-21T08:38:15.1446207Z             },
2026-06-21T08:38:15.1446289Z             {
2026-06-21T08:38:15.1446407Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1446493Z               "line": 11
2026-06-21T08:38:15.1446575Z             },
2026-06-21T08:38:15.1446657Z             {
2026-06-21T08:38:15.1446769Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1446853Z               "line": 115
2026-06-21T08:38:15.1447006Z             },
2026-06-21T08:38:15.1447090Z             {
2026-06-21T08:38:15.1447194Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1447368Z               "line": 554
2026-06-21T08:38:15.1447448Z             },
2026-06-21T08:38:15.1447533Z             {
2026-06-21T08:38:15.1447634Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1447715Z               "line": 635
2026-06-21T08:38:15.1447805Z             },
2026-06-21T08:38:15.1447887Z             {
2026-06-21T08:38:15.1447997Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1448072Z               "line": 694
2026-06-21T08:38:15.1448153Z             },
2026-06-21T08:38:15.1448241Z             {
2026-06-21T08:38:15.1448340Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1448421Z               "line": 747
2026-06-21T08:38:15.1448502Z             },
2026-06-21T08:38:15.1448588Z             {
2026-06-21T08:38:15.1448692Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1448787Z               "line": 785
2026-06-21T08:38:15.1448870Z             },
2026-06-21T08:38:15.1449030Z             {
2026-06-21T08:38:15.1449142Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1449227Z               "line": 8
2026-06-21T08:38:15.1449307Z             }
2026-06-21T08:38:15.1449382Z           ]
2026-06-21T08:38:15.1449473Z         },
2026-06-21T08:38:15.1449559Z         "int": {
2026-06-21T08:38:15.1449643Z           "complete": false,
2026-06-21T08:38:15.1449723Z           "evidence": []
2026-06-21T08:38:15.1449800Z         },
2026-06-21T08:38:15.1449887Z         "unit": {
2026-06-21T08:38:15.1449963Z           "complete": true,
2026-06-21T08:38:15.1450052Z           "evidence": [
2026-06-21T08:38:15.1450134Z             {
2026-06-21T08:38:15.1450239Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1450329Z               "line": 7638
2026-06-21T08:38:15.1450415Z             },
2026-06-21T08:38:15.1450492Z             {
2026-06-21T08:38:15.1450597Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1450682Z               "line": 7649
2026-06-21T08:38:15.1450764Z             },
2026-06-21T08:38:15.1450849Z             {
2026-06-21T08:38:15.1450968Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1451045Z               "line": 879
2026-06-21T08:38:15.1451136Z             },
2026-06-21T08:38:15.1451216Z             {
2026-06-21T08:38:15.1451321Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1451418Z               "line": 928
2026-06-21T08:38:15.1451498Z             },
2026-06-21T08:38:15.1451583Z             {
2026-06-21T08:38:15.1451684Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1451775Z               "line": 979
2026-06-21T08:38:15.1451850Z             },
2026-06-21T08:38:15.1451941Z             {
2026-06-21T08:38:15.1452047Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1452133Z               "line": 996
2026-06-21T08:38:15.1452212Z             },
2026-06-21T08:38:15.1452292Z             {
2026-06-21T08:38:15.1452398Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1452480Z               "line": 1005
2026-06-21T08:38:15.1452560Z             },
2026-06-21T08:38:15.1452645Z             {
2026-06-21T08:38:15.1452752Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1452842Z               "line": 1016
2026-06-21T08:38:15.1452926Z             },
2026-06-21T08:38:15.1453004Z             {
2026-06-21T08:38:15.1453113Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1453204Z               "line": 1038
2026-06-21T08:38:15.1453285Z             },
2026-06-21T08:38:15.1453371Z             {
2026-06-21T08:38:15.1453480Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1453570Z               "line": 1057
2026-06-21T08:38:15.1453653Z             },
2026-06-21T08:38:15.1453838Z             {
2026-06-21T08:38:15.1453943Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1454118Z               "line": 1107
2026-06-21T08:38:15.1454200Z             },
2026-06-21T08:38:15.1454282Z             {
2026-06-21T08:38:15.1454392Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1454476Z               "line": 1136
2026-06-21T08:38:15.1454565Z             },
2026-06-21T08:38:15.1454647Z             {
2026-06-21T08:38:15.1454751Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1454826Z               "line": 1149
2026-06-21T08:38:15.1454912Z             },
2026-06-21T08:38:15.1454989Z             {
2026-06-21T08:38:15.1455093Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1455188Z               "line": 1215
2026-06-21T08:38:15.1455260Z             },
2026-06-21T08:38:15.1455342Z             {
2026-06-21T08:38:15.1455445Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1455546Z               "line": 1256
2026-06-21T08:38:15.1455628Z             },
2026-06-21T08:38:15.1455714Z             {
2026-06-21T08:38:15.1455827Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1455914Z               "line": 1272
2026-06-21T08:38:15.1455994Z             },
2026-06-21T08:38:15.1456071Z             {
2026-06-21T08:38:15.1456175Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1456258Z               "line": 491
2026-06-21T08:38:15.1456342Z             },
2026-06-21T08:38:15.1456428Z             {
2026-06-21T08:38:15.1456539Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1456629Z               "line": 506
2026-06-21T08:38:15.1456714Z             },
2026-06-21T08:38:15.1456800Z             {
2026-06-21T08:38:15.1456902Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1456985Z               "line": 524
2026-06-21T08:38:15.1457072Z             },
2026-06-21T08:38:15.1457159Z             {
2026-06-21T08:38:15.1457277Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1457357Z               "line": 546
2026-06-21T08:38:15.1457447Z             },
2026-06-21T08:38:15.1457529Z             {
2026-06-21T08:38:15.1457636Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1457731Z               "line": 556
2026-06-21T08:38:15.1457808Z             },
2026-06-21T08:38:15.1457889Z             {
2026-06-21T08:38:15.1457998Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T08:38:15.1458093Z               "line": 582
2026-06-21T08:38:15.1458180Z             }
2026-06-21T08:38:15.1458261Z           ]
2026-06-21T08:38:15.1458346Z         }
2026-06-21T08:38:15.1458428Z       }
2026-06-21T08:38:15.1458509Z     },
2026-06-21T08:38:15.1458590Z     {
2026-06-21T08:38:15.1458694Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T08:38:15.1463393Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T08:38:15.1463697Z       "requiredStages": [
2026-06-21T08:38:15.1463783Z         "doc",
2026-06-21T08:38:15.1463868Z         "impl",
2026-06-21T08:38:15.1463950Z         "unit"
2026-06-21T08:38:15.1464035Z       ],
2026-06-21T08:38:15.1464121Z       "stages": {
2026-06-21T08:38:15.1464203Z         "doc": {
2026-06-21T08:38:15.1464303Z           "complete": true,
2026-06-21T08:38:15.1464389Z           "evidence": [
2026-06-21T08:38:15.1464479Z             {
2026-06-21T08:38:15.1464585Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1464665Z               "line": 390
2026-06-21T08:38:15.1464751Z             }
2026-06-21T08:38:15.1464837Z           ]
2026-06-21T08:38:15.1464923Z         },
2026-06-21T08:38:15.1465008Z         "impl": {
2026-06-21T08:38:15.1465093Z           "complete": true,
2026-06-21T08:38:15.1465174Z           "evidence": [
2026-06-21T08:38:15.1465260Z             {
2026-06-21T08:38:15.1465391Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1465472Z               "line": 39
2026-06-21T08:38:15.1465563Z             },
2026-06-21T08:38:15.1465639Z             {
2026-06-21T08:38:15.1465767Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1465864Z               "line": 79
2026-06-21T08:38:15.1465945Z             },
2026-06-21T08:38:15.1466034Z             {
2026-06-21T08:38:15.1466150Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1466245Z               "line": 162
2026-06-21T08:38:15.1466325Z             }
2026-06-21T08:38:15.1466402Z           ]
2026-06-21T08:38:15.1466489Z         },
2026-06-21T08:38:15.1466569Z         "int": {
2026-06-21T08:38:15.1466668Z           "complete": false,
2026-06-21T08:38:15.1466755Z           "evidence": []
2026-06-21T08:38:15.1466837Z         },
2026-06-21T08:38:15.1466922Z         "unit": {
2026-06-21T08:38:15.1467007Z           "complete": true,
2026-06-21T08:38:15.1467104Z           "evidence": [
2026-06-21T08:38:15.1467180Z             {
2026-06-21T08:38:15.1467298Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1467380Z               "line": 206
2026-06-21T08:38:15.1467466Z             },
2026-06-21T08:38:15.1467551Z             {
2026-06-21T08:38:15.1467671Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1467767Z               "line": 222
2026-06-21T08:38:15.1467852Z             },
2026-06-21T08:38:15.1467927Z             {
2026-06-21T08:38:15.1468041Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1468132Z               "line": 238
2026-06-21T08:38:15.1468220Z             },
2026-06-21T08:38:15.1468305Z             {
2026-06-21T08:38:15.1468431Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1468521Z               "line": 251
2026-06-21T08:38:15.1468606Z             },
2026-06-21T08:38:15.1468688Z             {
2026-06-21T08:38:15.1468812Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T08:38:15.1468897Z               "line": 258
2026-06-21T08:38:15.1469036Z             }
2026-06-21T08:38:15.1469121Z           ]
2026-06-21T08:38:15.1469202Z         }
2026-06-21T08:38:15.1469278Z       }
2026-06-21T08:38:15.1469370Z     },
2026-06-21T08:38:15.1469455Z     {
2026-06-21T08:38:15.1469550Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T08:38:15.1469741Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T08:38:15.1469841Z       "requiredStages": [
2026-06-21T08:38:15.1470038Z         "impl",
2026-06-21T08:38:15.1470122Z         "unit"
2026-06-21T08:38:15.1470209Z       ],
2026-06-21T08:38:15.1470385Z       "stages": {
2026-06-21T08:38:15.1470470Z         "doc": {
2026-06-21T08:38:15.1470555Z           "complete": false,
2026-06-21T08:38:15.1470641Z           "evidence": []
2026-06-21T08:38:15.1470721Z         },
2026-06-21T08:38:15.1470816Z         "impl": {
2026-06-21T08:38:15.1470906Z           "complete": true,
2026-06-21T08:38:15.1470997Z           "evidence": [
2026-06-21T08:38:15.1471073Z             {
2026-06-21T08:38:15.1471196Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1471284Z               "line": 18
2026-06-21T08:38:15.1471369Z             },
2026-06-21T08:38:15.1471444Z             {
2026-06-21T08:38:15.1471555Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1471636Z               "line": 35
2026-06-21T08:38:15.1471712Z             },
2026-06-21T08:38:15.1471802Z             {
2026-06-21T08:38:15.1471918Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1472007Z               "line": 72
2026-06-21T08:38:15.1472088Z             }
2026-06-21T08:38:15.1472174Z           ]
2026-06-21T08:38:15.1472256Z         },
2026-06-21T08:38:15.1472346Z         "int": {
2026-06-21T08:38:15.1472441Z           "complete": false,
2026-06-21T08:38:15.1472533Z           "evidence": []
2026-06-21T08:38:15.1472613Z         },
2026-06-21T08:38:15.1472703Z         "unit": {
2026-06-21T08:38:15.1472789Z           "complete": true,
2026-06-21T08:38:15.1472877Z           "evidence": [
2026-06-21T08:38:15.1472961Z             {
2026-06-21T08:38:15.1473076Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1473162Z               "line": 239
2026-06-21T08:38:15.1473243Z             },
2026-06-21T08:38:15.1473323Z             {
2026-06-21T08:38:15.1473432Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1473519Z               "line": 256
2026-06-21T08:38:15.1473605Z             },
2026-06-21T08:38:15.1473690Z             {
2026-06-21T08:38:15.1473804Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1473896Z               "line": 265
2026-06-21T08:38:15.1473981Z             }
2026-06-21T08:38:15.1474066Z           ]
2026-06-21T08:38:15.1474148Z         }
2026-06-21T08:38:15.1474229Z       }
2026-06-21T08:38:15.1474310Z     },
2026-06-21T08:38:15.1474400Z     {
2026-06-21T08:38:15.1474501Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T08:38:15.1474662Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T08:38:15.1474753Z       "requiredStages": [
2026-06-21T08:38:15.1474844Z         "impl",
2026-06-21T08:38:15.1474929Z         "unit"
2026-06-21T08:38:15.1475010Z       ],
2026-06-21T08:38:15.1475093Z       "stages": {
2026-06-21T08:38:15.1475173Z         "doc": {
2026-06-21T08:38:15.1475267Z           "complete": false,
2026-06-21T08:38:15.1475349Z           "evidence": []
2026-06-21T08:38:15.1475431Z         },
2026-06-21T08:38:15.1475521Z         "impl": {
2026-06-21T08:38:15.1475610Z           "complete": true,
2026-06-21T08:38:15.1475705Z           "evidence": [
2026-06-21T08:38:15.1475786Z             {
2026-06-21T08:38:15.1475904Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1475989Z               "line": 598
2026-06-21T08:38:15.1476071Z             }
2026-06-21T08:38:15.1476157Z           ]
2026-06-21T08:38:15.1476242Z         },
2026-06-21T08:38:15.1476332Z         "int": {
2026-06-21T08:38:15.1476414Z           "complete": false,
2026-06-21T08:38:15.1476505Z           "evidence": []
2026-06-21T08:38:15.1476589Z         },
2026-06-21T08:38:15.1476671Z         "unit": {
2026-06-21T08:38:15.1476758Z           "complete": true,
2026-06-21T08:38:15.1476843Z           "evidence": [
2026-06-21T08:38:15.1476928Z             {
2026-06-21T08:38:15.1477039Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1477134Z               "line": 967
2026-06-21T08:38:15.1477291Z             }
2026-06-21T08:38:15.1477373Z           ]
2026-06-21T08:38:15.1477453Z         }
2026-06-21T08:38:15.1477611Z       }
2026-06-21T08:38:15.1477688Z     },
2026-06-21T08:38:15.1477768Z     {
2026-06-21T08:38:15.1477868Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T08:38:15.1478046Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T08:38:15.1478149Z       "requiredStages": [
2026-06-21T08:38:15.1478226Z         "impl",
2026-06-21T08:38:15.1478308Z         "unit",
2026-06-21T08:38:15.1478393Z         "int"
2026-06-21T08:38:15.1478472Z       ],
2026-06-21T08:38:15.1478563Z       "stages": {
2026-06-21T08:38:15.1478644Z         "doc": {
2026-06-21T08:38:15.1478734Z           "complete": false,
2026-06-21T08:38:15.1478818Z           "evidence": []
2026-06-21T08:38:15.1478899Z         },
2026-06-21T08:38:15.1479038Z         "impl": {
2026-06-21T08:38:15.1479114Z           "complete": true,
2026-06-21T08:38:15.1479213Z           "evidence": [
2026-06-21T08:38:15.1479296Z             {
2026-06-21T08:38:15.1479410Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:15.1479495Z               "line": 24
2026-06-21T08:38:15.1479587Z             },
2026-06-21T08:38:15.1479681Z             {
2026-06-21T08:38:15.1479790Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1479882Z               "line": 22
2026-06-21T08:38:15.1479964Z             }
2026-06-21T08:38:15.1480044Z           ]
2026-06-21T08:38:15.1480129Z         },
2026-06-21T08:38:15.1480211Z         "int": {
2026-06-21T08:38:15.1480297Z           "complete": true,
2026-06-21T08:38:15.1480382Z           "evidence": [
2026-06-21T08:38:15.1480468Z             {
2026-06-21T08:38:15.1480579Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:15.1480663Z               "line": 260
2026-06-21T08:38:15.1480749Z             }
2026-06-21T08:38:15.1480827Z           ]
2026-06-21T08:38:15.1480918Z         },
2026-06-21T08:38:15.1481006Z         "unit": {
2026-06-21T08:38:15.1481096Z           "complete": true,
2026-06-21T08:38:15.1481182Z           "evidence": [
2026-06-21T08:38:15.1481268Z             {
2026-06-21T08:38:15.1481371Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:15.1481451Z               "line": 171
2026-06-21T08:38:15.1481538Z             },
2026-06-21T08:38:15.1481620Z             {
2026-06-21T08:38:15.1481733Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:15.1481819Z               "line": 200
2026-06-21T08:38:15.1481901Z             },
2026-06-21T08:38:15.1481986Z             {
2026-06-21T08:38:15.1482100Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T08:38:15.1482192Z               "line": 220
2026-06-21T08:38:15.1482273Z             },
2026-06-21T08:38:15.1482357Z             {
2026-06-21T08:38:15.1482468Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1482558Z               "line": 199
2026-06-21T08:38:15.1482644Z             },
2026-06-21T08:38:15.1482729Z             {
2026-06-21T08:38:15.1482835Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1482921Z               "line": 219
2026-06-21T08:38:15.1483011Z             },
2026-06-21T08:38:15.1483093Z             {
2026-06-21T08:38:15.1483201Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1483283Z               "line": 244
2026-06-21T08:38:15.1483374Z             },
2026-06-21T08:38:15.1483456Z             {
2026-06-21T08:38:15.1483559Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1483655Z               "line": 276
2026-06-21T08:38:15.1483727Z             },
2026-06-21T08:38:15.1483808Z             {
2026-06-21T08:38:15.1483916Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1483992Z               "line": 297
2026-06-21T08:38:15.1484079Z             },
2026-06-21T08:38:15.1484151Z             {
2026-06-21T08:38:15.1484259Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T08:38:15.1484451Z               "line": 324
2026-06-21T08:38:15.1484541Z             }
2026-06-21T08:38:15.1484704Z           ]
2026-06-21T08:38:15.1484789Z         }
2026-06-21T08:38:15.1484870Z       }
2026-06-21T08:38:15.1484955Z     },
2026-06-21T08:38:15.1485042Z     {
2026-06-21T08:38:15.1485137Z       "id": "REQ-SEAM-INJECT",
2026-06-21T08:38:15.1485299Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T08:38:15.1485395Z       "requiredStages": [
2026-06-21T08:38:15.1485485Z         "impl",
2026-06-21T08:38:15.1485570Z         "unit"
2026-06-21T08:38:15.1485648Z       ],
2026-06-21T08:38:15.1485733Z       "stages": {
2026-06-21T08:38:15.1488405Z         "doc": {
2026-06-21T08:38:15.1488525Z           "complete": false,
2026-06-21T08:38:15.1488610Z           "evidence": []
2026-06-21T08:38:15.1488699Z         },
2026-06-21T08:38:15.1488786Z         "impl": {
2026-06-21T08:38:15.1488873Z           "complete": true,
2026-06-21T08:38:15.1489066Z           "evidence": [
2026-06-21T08:38:15.1489147Z             {
2026-06-21T08:38:15.1489280Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1489373Z               "line": 19
2026-06-21T08:38:15.1489469Z             },
2026-06-21T08:38:15.1489551Z             {
2026-06-21T08:38:15.1489670Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1489769Z               "line": 111
2026-06-21T08:38:15.1489847Z             }
2026-06-21T08:38:15.1489932Z           ]
2026-06-21T08:38:15.1490012Z         },
2026-06-21T08:38:15.1490093Z         "int": {
2026-06-21T08:38:15.1490185Z           "complete": false,
2026-06-21T08:38:15.1490276Z           "evidence": []
2026-06-21T08:38:15.1490355Z         },
2026-06-21T08:38:15.1490442Z         "unit": {
2026-06-21T08:38:15.1490533Z           "complete": true,
2026-06-21T08:38:15.1490614Z           "evidence": [
2026-06-21T08:38:15.1490689Z             {
2026-06-21T08:38:15.1490805Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1490885Z               "line": 345
2026-06-21T08:38:15.1490971Z             },
2026-06-21T08:38:15.1491052Z             {
2026-06-21T08:38:15.1491168Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1491252Z               "line": 365
2026-06-21T08:38:15.1491329Z             }
2026-06-21T08:38:15.1491411Z           ]
2026-06-21T08:38:15.1491482Z         }
2026-06-21T08:38:15.1491562Z       }
2026-06-21T08:38:15.1491638Z     },
2026-06-21T08:38:15.1491719Z     {
2026-06-21T08:38:15.1491819Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T08:38:15.1491959Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T08:38:15.1492046Z       "requiredStages": [
2026-06-21T08:38:15.1492127Z         "impl",
2026-06-21T08:38:15.1492203Z         "unit"
2026-06-21T08:38:15.1492288Z       ],
2026-06-21T08:38:15.1492375Z       "stages": {
2026-06-21T08:38:15.1492451Z         "doc": {
2026-06-21T08:38:15.1492541Z           "complete": false,
2026-06-21T08:38:15.1492627Z           "evidence": []
2026-06-21T08:38:15.1492714Z         },
2026-06-21T08:38:15.1492789Z         "impl": {
2026-06-21T08:38:15.1492870Z           "complete": true,
2026-06-21T08:38:15.1492956Z           "evidence": [
2026-06-21T08:38:15.1493043Z             {
2026-06-21T08:38:15.1493161Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1493242Z               "line": 18
2026-06-21T08:38:15.1493319Z             },
2026-06-21T08:38:15.1493400Z             {
2026-06-21T08:38:15.1493514Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1493600Z               "line": 431
2026-06-21T08:38:15.1493677Z             }
2026-06-21T08:38:15.1493762Z           ]
2026-06-21T08:38:15.1493848Z         },
2026-06-21T08:38:15.1493934Z         "int": {
2026-06-21T08:38:15.1494030Z           "complete": false,
2026-06-21T08:38:15.1494114Z           "evidence": []
2026-06-21T08:38:15.1494196Z         },
2026-06-21T08:38:15.1494283Z         "unit": {
2026-06-21T08:38:15.1494514Z           "complete": true,
2026-06-21T08:38:15.1494605Z           "evidence": [
2026-06-21T08:38:15.1494772Z             {
2026-06-21T08:38:15.1494891Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1494973Z               "line": 881
2026-06-21T08:38:15.1495059Z             },
2026-06-21T08:38:15.1495148Z             {
2026-06-21T08:38:15.1495264Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1495359Z               "line": 891
2026-06-21T08:38:15.1495439Z             }
2026-06-21T08:38:15.1495525Z           ]
2026-06-21T08:38:15.1495607Z         }
2026-06-21T08:38:15.1495692Z       }
2026-06-21T08:38:15.1495777Z     },
2026-06-21T08:38:15.1495864Z     {
2026-06-21T08:38:15.1495960Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T08:38:15.1496102Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T08:38:15.1496198Z       "requiredStages": [
2026-06-21T08:38:15.1496279Z         "impl",
2026-06-21T08:38:15.1496374Z         "unit",
2026-06-21T08:38:15.1496455Z         "int"
2026-06-21T08:38:15.1496532Z       ],
2026-06-21T08:38:15.1496627Z       "stages": {
2026-06-21T08:38:15.1496712Z         "doc": {
2026-06-21T08:38:15.1496806Z           "complete": false,
2026-06-21T08:38:15.1496893Z           "evidence": []
2026-06-21T08:38:15.1496977Z         },
2026-06-21T08:38:15.1497053Z         "impl": {
2026-06-21T08:38:15.1497143Z           "complete": true,
2026-06-21T08:38:15.1497239Z           "evidence": [
2026-06-21T08:38:15.1497324Z             {
2026-06-21T08:38:15.1497438Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T08:38:15.1497515Z               "line": 19
2026-06-21T08:38:15.1497601Z             },
2026-06-21T08:38:15.1497672Z             {
2026-06-21T08:38:15.1497787Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T08:38:15.1497868Z               "line": 12
2026-06-21T08:38:15.1497949Z             },
2026-06-21T08:38:15.1498035Z             {
2026-06-21T08:38:15.1498141Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1498221Z               "line": 301
2026-06-21T08:38:15.1498306Z             }
2026-06-21T08:38:15.1498392Z           ]
2026-06-21T08:38:15.1498475Z         },
2026-06-21T08:38:15.1498559Z         "int": {
2026-06-21T08:38:15.1498640Z           "complete": true,
2026-06-21T08:38:15.1498726Z           "evidence": [
2026-06-21T08:38:15.1498808Z             {
2026-06-21T08:38:15.1498926Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:15.1499099Z               "line": 259
2026-06-21T08:38:15.1499184Z             }
2026-06-21T08:38:15.1499264Z           ]
2026-06-21T08:38:15.1499351Z         },
2026-06-21T08:38:15.1499447Z         "unit": {
2026-06-21T08:38:15.1499541Z           "complete": true,
2026-06-21T08:38:15.1499621Z           "evidence": [
2026-06-21T08:38:15.1499707Z             {
2026-06-21T08:38:15.1499821Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T08:38:15.1499901Z               "line": 195
2026-06-21T08:38:15.1499986Z             },
2026-06-21T08:38:15.1500063Z             {
2026-06-21T08:38:15.1500178Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T08:38:15.1500258Z               "line": 202
2026-06-21T08:38:15.1500344Z             },
2026-06-21T08:38:15.1500426Z             {
2026-06-21T08:38:15.1500526Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T08:38:15.1500610Z               "line": 225
2026-06-21T08:38:15.1500683Z             },
2026-06-21T08:38:15.1500769Z             {
2026-06-21T08:38:15.1500873Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T08:38:15.1500959Z               "line": 106
2026-06-21T08:38:15.1501041Z             },
2026-06-21T08:38:15.1501117Z             {
2026-06-21T08:38:15.1501226Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T08:38:15.1501307Z               "line": 137
2026-06-21T08:38:15.1501384Z             },
2026-06-21T08:38:15.1501469Z             {
2026-06-21T08:38:15.1501689Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T08:38:15.1501784Z               "line": 161
2026-06-21T08:38:15.1501942Z             }
2026-06-21T08:38:15.1502019Z           ]
2026-06-21T08:38:15.1502099Z         }
2026-06-21T08:38:15.1502174Z       }
2026-06-21T08:38:15.1502259Z     },
2026-06-21T08:38:15.1502341Z     {
2026-06-21T08:38:15.1502439Z       "id": "REQ-SEAM-RESUME",
2026-06-21T08:38:15.1502625Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T08:38:15.1502726Z       "requiredStages": [
2026-06-21T08:38:15.1502810Z         "impl",
2026-06-21T08:38:15.1502891Z         "unit"
2026-06-21T08:38:15.1502974Z       ],
2026-06-21T08:38:15.1503059Z       "stages": {
2026-06-21T08:38:15.1503134Z         "doc": {
2026-06-21T08:38:15.1503225Z           "complete": false,
2026-06-21T08:38:15.1503307Z           "evidence": []
2026-06-21T08:38:15.1503393Z         },
2026-06-21T08:38:15.1503477Z         "impl": {
2026-06-21T08:38:15.1503565Z           "complete": true,
2026-06-21T08:38:15.1503650Z           "evidence": [
2026-06-21T08:38:15.1503731Z             {
2026-06-21T08:38:15.1503845Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:15.1503927Z               "line": 19
2026-06-21T08:38:15.1504012Z             }
2026-06-21T08:38:15.1504098Z           ]
2026-06-21T08:38:15.1504174Z         },
2026-06-21T08:38:15.1504256Z         "int": {
2026-06-21T08:38:15.1504350Z           "complete": false,
2026-06-21T08:38:15.1504441Z           "evidence": []
2026-06-21T08:38:15.1504524Z         },
2026-06-21T08:38:15.1504600Z         "unit": {
2026-06-21T08:38:15.1504688Z           "complete": true,
2026-06-21T08:38:15.1504775Z           "evidence": [
2026-06-21T08:38:15.1504848Z             {
2026-06-21T08:38:15.1504961Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:15.1505046Z               "line": 201
2026-06-21T08:38:15.1505126Z             },
2026-06-21T08:38:15.1505213Z             {
2026-06-21T08:38:15.1505327Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:15.1505418Z               "line": 223
2026-06-21T08:38:15.1505504Z             },
2026-06-21T08:38:15.1505590Z             {
2026-06-21T08:38:15.1505699Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T08:38:15.1505785Z               "line": 244
2026-06-21T08:38:15.1505867Z             }
2026-06-21T08:38:15.1505953Z           ]
2026-06-21T08:38:15.1506032Z         }
2026-06-21T08:38:15.1506105Z       }
2026-06-21T08:38:15.1506186Z     },
2026-06-21T08:38:15.1506271Z     {
2026-06-21T08:38:15.1506366Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T08:38:15.1506463Z       "title": "spawn-session seam",
2026-06-21T08:38:15.1506562Z       "requiredStages": [
2026-06-21T08:38:15.1506648Z         "impl",
2026-06-21T08:38:15.1506734Z         "unit"
2026-06-21T08:38:15.1506821Z       ],
2026-06-21T08:38:15.1506900Z       "stages": {
2026-06-21T08:38:15.1506986Z         "doc": {
2026-06-21T08:38:15.1507068Z           "complete": false,
2026-06-21T08:38:15.1507168Z           "evidence": []
2026-06-21T08:38:15.1507253Z         },
2026-06-21T08:38:15.1507338Z         "impl": {
2026-06-21T08:38:15.1507434Z           "complete": true,
2026-06-21T08:38:15.1507523Z           "evidence": [
2026-06-21T08:38:15.1507608Z             {
2026-06-21T08:38:15.1507732Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1507809Z               "line": 20
2026-06-21T08:38:15.1507894Z             }
2026-06-21T08:38:15.1507974Z           ]
2026-06-21T08:38:15.1508056Z         },
2026-06-21T08:38:15.1508138Z         "int": {
2026-06-21T08:38:15.1508228Z           "complete": false,
2026-06-21T08:38:15.1508303Z           "evidence": []
2026-06-21T08:38:15.1508391Z         },
2026-06-21T08:38:15.1508466Z         "unit": {
2026-06-21T08:38:15.1508551Z           "complete": true,
2026-06-21T08:38:15.1508647Z           "evidence": [
2026-06-21T08:38:15.1508725Z             {
2026-06-21T08:38:15.1508848Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1509138Z               "line": 608
2026-06-21T08:38:15.1509215Z             },
2026-06-21T08:38:15.1509434Z             {
2026-06-21T08:38:15.1509553Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1509640Z               "line": 615
2026-06-21T08:38:15.1509721Z             },
2026-06-21T08:38:15.1509796Z             {
2026-06-21T08:38:15.1509906Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1509998Z               "line": 721
2026-06-21T08:38:15.1510078Z             },
2026-06-21T08:38:15.1510158Z             {
2026-06-21T08:38:15.1510277Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1510358Z               "line": 727
2026-06-21T08:38:15.1510446Z             },
2026-06-21T08:38:15.1510527Z             {
2026-06-21T08:38:15.1510647Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1510738Z               "line": 752
2026-06-21T08:38:15.1510823Z             },
2026-06-21T08:38:15.1510913Z             {
2026-06-21T08:38:15.1511010Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T08:38:15.1511104Z               "line": 789
2026-06-21T08:38:15.1511185Z             }
2026-06-21T08:38:15.1511272Z           ]
2026-06-21T08:38:15.1511343Z         }
2026-06-21T08:38:15.1511424Z       }
2026-06-21T08:38:15.1511504Z     },
2026-06-21T08:38:15.1511577Z     {
2026-06-21T08:38:15.1511677Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T08:38:15.1511839Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T08:38:15.1511940Z       "requiredStages": [
2026-06-21T08:38:15.1512025Z         "impl",
2026-06-21T08:38:15.1512106Z         "unit"
2026-06-21T08:38:15.1512187Z       ],
2026-06-21T08:38:15.1512269Z       "stages": {
2026-06-21T08:38:15.1512353Z         "doc": {
2026-06-21T08:38:15.1512439Z           "complete": false,
2026-06-21T08:38:15.1512522Z           "evidence": []
2026-06-21T08:38:15.1512607Z         },
2026-06-21T08:38:15.1512692Z         "impl": {
2026-06-21T08:38:15.1512781Z           "complete": true,
2026-06-21T08:38:15.1512868Z           "evidence": [
2026-06-21T08:38:15.1512953Z             {
2026-06-21T08:38:15.1513084Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1513166Z               "line": 28
2026-06-21T08:38:15.1513252Z             },
2026-06-21T08:38:15.1513333Z             {
2026-06-21T08:38:15.1513461Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1513538Z               "line": 88
2026-06-21T08:38:15.1513624Z             }
2026-06-21T08:38:15.1513699Z           ]
2026-06-21T08:38:15.1513776Z         },
2026-06-21T08:38:15.1513858Z         "int": {
2026-06-21T08:38:15.1513938Z           "complete": false,
2026-06-21T08:38:15.1514028Z           "evidence": []
2026-06-21T08:38:15.1514110Z         },
2026-06-21T08:38:15.1514196Z         "unit": {
2026-06-21T08:38:15.1514276Z           "complete": true,
2026-06-21T08:38:15.1514367Z           "evidence": [
2026-06-21T08:38:15.1514449Z             {
2026-06-21T08:38:15.1514577Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1514663Z               "line": 326
2026-06-21T08:38:15.1514749Z             },
2026-06-21T08:38:15.1514831Z             {
2026-06-21T08:38:15.1514954Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1515035Z               "line": 337
2026-06-21T08:38:15.1515117Z             }
2026-06-21T08:38:15.1515197Z           ]
2026-06-21T08:38:15.1515273Z         }
2026-06-21T08:38:15.1515355Z       }
2026-06-21T08:38:15.1515441Z     },
2026-06-21T08:38:15.1515522Z     {
2026-06-21T08:38:15.1515611Z       "id": "REQ-SEC-1",
2026-06-21T08:38:15.1516001Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T08:38:15.1516078Z       "requiredStages": [
2026-06-21T08:38:15.1516273Z         "impl",
2026-06-21T08:38:15.1516355Z         "unit"
2026-06-21T08:38:15.1516441Z       ],
2026-06-21T08:38:15.1516592Z       "stages": {
2026-06-21T08:38:15.1516679Z         "doc": {
2026-06-21T08:38:15.1516775Z           "complete": false,
2026-06-21T08:38:15.1516865Z           "evidence": []
2026-06-21T08:38:15.1516951Z         },
2026-06-21T08:38:15.1517032Z         "impl": {
2026-06-21T08:38:15.1517122Z           "complete": true,
2026-06-21T08:38:15.1517208Z           "evidence": [
2026-06-21T08:38:15.1517284Z             {
2026-06-21T08:38:15.1517409Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.1517494Z               "line": 86
2026-06-21T08:38:15.1517580Z             },
2026-06-21T08:38:15.1517662Z             {
2026-06-21T08:38:15.1517780Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.1517870Z               "line": 116
2026-06-21T08:38:15.1517951Z             },
2026-06-21T08:38:15.1518027Z             {
2026-06-21T08:38:15.1518134Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.1518229Z               "line": 130
2026-06-21T08:38:15.1518316Z             },
2026-06-21T08:38:15.1518398Z             {
2026-06-21T08:38:15.1518501Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1518583Z               "line": 109
2026-06-21T08:38:15.1518665Z             },
2026-06-21T08:38:15.1518746Z             {
2026-06-21T08:38:15.1518854Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1519026Z               "line": 130
2026-06-21T08:38:15.1519102Z             },
2026-06-21T08:38:15.1519193Z             {
2026-06-21T08:38:15.1519294Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1519389Z               "line": 143
2026-06-21T08:38:15.1519469Z             },
2026-06-21T08:38:15.1519556Z             {
2026-06-21T08:38:15.1519660Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1519746Z               "line": 209
2026-06-21T08:38:15.1519827Z             },
2026-06-21T08:38:15.1519910Z             {
2026-06-21T08:38:15.1520018Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1520104Z               "line": 235
2026-06-21T08:38:15.1520186Z             },
2026-06-21T08:38:15.1520267Z             {
2026-06-21T08:38:15.1520380Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1520466Z               "line": 5295
2026-06-21T08:38:15.1520549Z             }
2026-06-21T08:38:15.1520629Z           ]
2026-06-21T08:38:15.1520709Z         },
2026-06-21T08:38:15.1520789Z         "int": {
2026-06-21T08:38:15.1520875Z           "complete": false,
2026-06-21T08:38:15.1520964Z           "evidence": []
2026-06-21T08:38:15.1521045Z         },
2026-06-21T08:38:15.1521125Z         "unit": {
2026-06-21T08:38:15.1521217Z           "complete": true,
2026-06-21T08:38:15.1521303Z           "evidence": [
2026-06-21T08:38:15.1521388Z             {
2026-06-21T08:38:15.1521493Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.1521593Z               "line": 142
2026-06-21T08:38:15.1521674Z             },
2026-06-21T08:38:15.1521759Z             {
2026-06-21T08:38:15.1521880Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.1521956Z               "line": 194
2026-06-21T08:38:15.1522041Z             },
2026-06-21T08:38:15.1522122Z             {
2026-06-21T08:38:15.1522241Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T08:38:15.1522327Z               "line": 235
2026-06-21T08:38:15.1522408Z             },
2026-06-21T08:38:15.1522500Z             {
2026-06-21T08:38:15.1522608Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T08:38:15.1522699Z               "line": 140
2026-06-21T08:38:15.1522782Z             },
2026-06-21T08:38:15.1522862Z             {
2026-06-21T08:38:15.1522976Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1523062Z               "line": 247
2026-06-21T08:38:15.1523252Z             },
2026-06-21T08:38:15.1523337Z             {
2026-06-21T08:38:15.1523447Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1523630Z               "line": 277
2026-06-21T08:38:15.1523711Z             },
2026-06-21T08:38:15.1523808Z             {
2026-06-21T08:38:15.1523912Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1524002Z               "line": 310
2026-06-21T08:38:15.1524079Z             },
2026-06-21T08:38:15.1524160Z             {
2026-06-21T08:38:15.1524269Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1524360Z               "line": 329
2026-06-21T08:38:15.1524446Z             },
2026-06-21T08:38:15.1524532Z             {
2026-06-21T08:38:15.1524631Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1524714Z               "line": 362
2026-06-21T08:38:15.1524799Z             },
2026-06-21T08:38:15.1524880Z             {
2026-06-21T08:38:15.1524989Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T08:38:15.1525076Z               "line": 386
2026-06-21T08:38:15.1525161Z             },
2026-06-21T08:38:15.1525246Z             {
2026-06-21T08:38:15.1525344Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1525428Z               "line": 8296
2026-06-21T08:38:15.1525514Z             }
2026-06-21T08:38:15.1525595Z           ]
2026-06-21T08:38:15.1525672Z         }
2026-06-21T08:38:15.1525757Z       }
2026-06-21T08:38:15.1525843Z     },
2026-06-21T08:38:15.1525925Z     {
2026-06-21T08:38:15.1526030Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T08:38:15.1529792Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T08:38:15.1529906Z       "requiredStages": [
2026-06-21T08:38:15.1529992Z         "impl",
2026-06-21T08:38:15.1530073Z         "unit",
2026-06-21T08:38:15.1530155Z         "int"
2026-06-21T08:38:15.1530244Z       ],
2026-06-21T08:38:15.1530316Z       "stages": {
2026-06-21T08:38:15.1530406Z         "doc": {
2026-06-21T08:38:15.1530494Z           "complete": false,
2026-06-21T08:38:15.1530573Z           "evidence": []
2026-06-21T08:38:15.1530664Z         },
2026-06-21T08:38:15.1530746Z         "impl": {
2026-06-21T08:38:15.1530827Z           "complete": true,
2026-06-21T08:38:15.1530911Z           "evidence": [
2026-06-21T08:38:15.1530998Z             {
2026-06-21T08:38:15.1531123Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.1531203Z               "line": 1066
2026-06-21T08:38:15.1531293Z             },
2026-06-21T08:38:15.1531378Z             {
2026-06-21T08:38:15.1531501Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1531590Z               "line": 1857
2026-06-21T08:38:15.1531666Z             },
2026-06-21T08:38:15.1531748Z             {
2026-06-21T08:38:15.1531853Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1532043Z               "line": 2850
2026-06-21T08:38:15.1532130Z             }
2026-06-21T08:38:15.1532291Z           ]
2026-06-21T08:38:15.1532378Z         },
2026-06-21T08:38:15.1532458Z         "int": {
2026-06-21T08:38:15.1532549Z           "complete": true,
2026-06-21T08:38:15.1532634Z           "evidence": [
2026-06-21T08:38:15.1532717Z             {
2026-06-21T08:38:15.1532845Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.1532940Z               "line": 189
2026-06-21T08:38:15.1533027Z             },
2026-06-21T08:38:15.1533112Z             {
2026-06-21T08:38:15.1533231Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T08:38:15.1533317Z               "line": 524
2026-06-21T08:38:15.1533403Z             }
2026-06-21T08:38:15.1533483Z           ]
2026-06-21T08:38:15.1533565Z         },
2026-06-21T08:38:15.1533656Z         "unit": {
2026-06-21T08:38:15.1533746Z           "complete": true,
2026-06-21T08:38:15.1533845Z           "evidence": [
2026-06-21T08:38:15.1533925Z             {
2026-06-21T08:38:15.1534035Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T08:38:15.1534124Z               "line": 952
2026-06-21T08:38:15.1534209Z             },
2026-06-21T08:38:15.1534291Z             {
2026-06-21T08:38:15.1534392Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1534482Z               "line": 7486
2026-06-21T08:38:15.1534567Z             }
2026-06-21T08:38:15.1534649Z           ]
2026-06-21T08:38:15.1534734Z         }
2026-06-21T08:38:15.1534820Z       }
2026-06-21T08:38:15.1534901Z     },
2026-06-21T08:38:15.1534987Z     {
2026-06-21T08:38:15.1535097Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T08:38:15.1542000Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T08:38:15.1542118Z       "requiredStages": [
2026-06-21T08:38:15.1542327Z         "doc",
2026-06-21T08:38:15.1542409Z         "impl",
2026-06-21T08:38:15.1542584Z         "unit",
2026-06-21T08:38:15.1542666Z         "int"
2026-06-21T08:38:15.1542752Z       ],
2026-06-21T08:38:15.1542842Z       "stages": {
2026-06-21T08:38:15.1542923Z         "doc": {
2026-06-21T08:38:15.1543018Z           "complete": true,
2026-06-21T08:38:15.1543109Z           "evidence": [
2026-06-21T08:38:15.1543185Z             {
2026-06-21T08:38:15.1543329Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T08:38:15.1543410Z               "line": 130
2026-06-21T08:38:15.1543495Z             },
2026-06-21T08:38:15.1543577Z             {
2026-06-21T08:38:15.1543686Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.1543771Z               "line": 96
2026-06-21T08:38:15.1543853Z             }
2026-06-21T08:38:15.1543935Z           ]
2026-06-21T08:38:15.1544005Z         },
2026-06-21T08:38:15.1544091Z         "impl": {
2026-06-21T08:38:15.1544188Z           "complete": true,
2026-06-21T08:38:15.1544278Z           "evidence": [
2026-06-21T08:38:15.1544367Z             {
2026-06-21T08:38:15.1544500Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.1544582Z               "line": 77
2026-06-21T08:38:15.1544656Z             },
2026-06-21T08:38:15.1544741Z             {
2026-06-21T08:38:15.1544865Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.1544952Z               "line": 183
2026-06-21T08:38:15.1545037Z             },
2026-06-21T08:38:15.1545117Z             {
2026-06-21T08:38:15.1545233Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1545323Z               "line": 222
2026-06-21T08:38:15.1545408Z             },
2026-06-21T08:38:15.1545490Z             {
2026-06-21T08:38:15.1545605Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1545690Z               "line": 71
2026-06-21T08:38:15.1545776Z             },
2026-06-21T08:38:15.1545862Z             {
2026-06-21T08:38:15.1545971Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1546066Z               "line": 176
2026-06-21T08:38:15.1546144Z             }
2026-06-21T08:38:15.1546229Z           ]
2026-06-21T08:38:15.1546315Z         },
2026-06-21T08:38:15.1546400Z         "int": {
2026-06-21T08:38:15.1546492Z           "complete": true,
2026-06-21T08:38:15.1546572Z           "evidence": [
2026-06-21T08:38:15.1546644Z             {
2026-06-21T08:38:15.1546769Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T08:38:15.1546859Z               "line": 25
2026-06-21T08:38:15.1546948Z             }
2026-06-21T08:38:15.1547025Z           ]
2026-06-21T08:38:15.1547103Z         },
2026-06-21T08:38:15.1547178Z         "unit": {
2026-06-21T08:38:15.1547272Z           "complete": true,
2026-06-21T08:38:15.1547353Z           "evidence": [
2026-06-21T08:38:15.1547444Z             {
2026-06-21T08:38:15.1547568Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.1547653Z               "line": 341
2026-06-21T08:38:15.1547740Z             },
2026-06-21T08:38:15.1547821Z             {
2026-06-21T08:38:15.1547944Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T08:38:15.1548030Z               "line": 391
2026-06-21T08:38:15.1548102Z             },
2026-06-21T08:38:15.1548193Z             {
2026-06-21T08:38:15.1548311Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1548398Z               "line": 1244
2026-06-21T08:38:15.1548479Z             },
2026-06-21T08:38:15.1548564Z             {
2026-06-21T08:38:15.1548684Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1548770Z               "line": 184
2026-06-21T08:38:15.1548855Z             },
2026-06-21T08:38:15.1548936Z             {
2026-06-21T08:38:15.1549137Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1549222Z               "line": 208
2026-06-21T08:38:15.1549460Z             },
2026-06-21T08:38:15.1549541Z             {
2026-06-21T08:38:15.1549655Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1549829Z               "line": 236
2026-06-21T08:38:15.1549910Z             },
2026-06-21T08:38:15.1549996Z             {
2026-06-21T08:38:15.1550102Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T08:38:15.1550186Z               "line": 945
2026-06-21T08:38:15.1550268Z             }
2026-06-21T08:38:15.1550345Z           ]
2026-06-21T08:38:15.1550426Z         }
2026-06-21T08:38:15.1550510Z       }
2026-06-21T08:38:15.1550592Z     },
2026-06-21T08:38:15.1550665Z     {
2026-06-21T08:38:15.1550769Z       "id": "REQ-SHELL-1",
2026-06-21T08:38:15.1551638Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T08:38:15.1551741Z       "requiredStages": [
2026-06-21T08:38:15.1551832Z         "impl",
2026-06-21T08:38:15.1551909Z         "unit",
2026-06-21T08:38:15.1552004Z         "int"
2026-06-21T08:38:15.1552085Z       ],
2026-06-21T08:38:15.1552171Z       "stages": {
2026-06-21T08:38:15.1552253Z         "doc": {
2026-06-21T08:38:15.1552347Z           "complete": false,
2026-06-21T08:38:15.1552437Z           "evidence": []
2026-06-21T08:38:15.1552518Z         },
2026-06-21T08:38:15.1552613Z         "impl": {
2026-06-21T08:38:15.1552706Z           "complete": true,
2026-06-21T08:38:15.1552787Z           "evidence": [
2026-06-21T08:38:15.1552873Z             {
2026-06-21T08:38:15.1552993Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1553092Z               "line": 189
2026-06-21T08:38:15.1553164Z             },
2026-06-21T08:38:15.1553250Z             {
2026-06-21T08:38:15.1553368Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1553459Z               "line": 268
2026-06-21T08:38:15.1553551Z             },
2026-06-21T08:38:15.1553637Z             {
2026-06-21T08:38:15.1553755Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1553842Z               "line": 27
2026-06-21T08:38:15.1553931Z             },
2026-06-21T08:38:15.1554012Z             {
2026-06-21T08:38:15.1554128Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1554213Z               "line": 52
2026-06-21T08:38:15.1554298Z             },
2026-06-21T08:38:15.1554385Z             {
2026-06-21T08:38:15.1554495Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1554584Z               "line": 144
2026-06-21T08:38:15.1554675Z             },
2026-06-21T08:38:15.1554758Z             {
2026-06-21T08:38:15.1554876Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1554960Z               "line": 176
2026-06-21T08:38:15.1555045Z             },
2026-06-21T08:38:15.1555122Z             {
2026-06-21T08:38:15.1555239Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1555320Z               "line": 22
2026-06-21T08:38:15.1555406Z             },
2026-06-21T08:38:15.1555483Z             {
2026-06-21T08:38:15.1555602Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1555687Z               "line": 65
2026-06-21T08:38:15.1555770Z             },
2026-06-21T08:38:15.1555855Z             {
2026-06-21T08:38:15.1555978Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1556065Z               "line": 76
2026-06-21T08:38:15.1556150Z             },
2026-06-21T08:38:15.1556226Z             {
2026-06-21T08:38:15.1556346Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1556437Z               "line": 151
2026-06-21T08:38:15.1556522Z             },
2026-06-21T08:38:15.1556603Z             {
2026-06-21T08:38:15.1556794Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1556889Z               "line": 210
2026-06-21T08:38:15.1557038Z             },
2026-06-21T08:38:15.1557122Z             {
2026-06-21T08:38:15.1557242Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1557334Z               "line": 259
2026-06-21T08:38:15.1557419Z             },
2026-06-21T08:38:15.1557509Z             {
2026-06-21T08:38:15.1557629Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1557706Z               "line": 281
2026-06-21T08:38:15.1557790Z             },
2026-06-21T08:38:15.1557875Z             {
2026-06-21T08:38:15.1557995Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1558081Z               "line": 294
2026-06-21T08:38:15.1558161Z             },
2026-06-21T08:38:15.1558247Z             {
2026-06-21T08:38:15.1558357Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.1558452Z               "line": 217
2026-06-21T08:38:15.1558537Z             },
2026-06-21T08:38:15.1558625Z             {
2026-06-21T08:38:15.1558734Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.1558824Z               "line": 233
2026-06-21T08:38:15.1558901Z             },
2026-06-21T08:38:15.1559058Z             {
2026-06-21T08:38:15.1559181Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:15.1559278Z               "line": 41
2026-06-21T08:38:15.1559363Z             },
2026-06-21T08:38:15.1559449Z             {
2026-06-21T08:38:15.1559564Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:15.1559654Z               "line": 222
2026-06-21T08:38:15.1559730Z             },
2026-06-21T08:38:15.1559816Z             {
2026-06-21T08:38:15.1559936Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T08:38:15.1560020Z               "line": 173
2026-06-21T08:38:15.1560101Z             },
2026-06-21T08:38:15.1560186Z             {
2026-06-21T08:38:15.1560305Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.1560385Z               "line": 354
2026-06-21T08:38:15.1562958Z             },
2026-06-21T08:38:15.1563058Z             {
2026-06-21T08:38:15.1563182Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.1563280Z               "line": 419
2026-06-21T08:38:15.1563361Z             },
2026-06-21T08:38:15.1563442Z             {
2026-06-21T08:38:15.1563572Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1563666Z               "line": 333
2026-06-21T08:38:15.1563743Z             },
2026-06-21T08:38:15.1563824Z             {
2026-06-21T08:38:15.1563929Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1564014Z               "line": 6320
2026-06-21T08:38:15.1564097Z             },
2026-06-21T08:38:15.1564172Z             {
2026-06-21T08:38:15.1564271Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1564368Z               "line": 6470
2026-06-21T08:38:15.1564450Z             },
2026-06-21T08:38:15.1564535Z             {
2026-06-21T08:38:15.1564635Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1564721Z               "line": 6646
2026-06-21T08:38:15.1564806Z             }
2026-06-21T08:38:15.1564887Z           ]
2026-06-21T08:38:15.1564968Z         },
2026-06-21T08:38:15.1565041Z         "int": {
2026-06-21T08:38:15.1565140Z           "complete": true,
2026-06-21T08:38:15.1565226Z           "evidence": [
2026-06-21T08:38:15.1565308Z             {
2026-06-21T08:38:15.1565432Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1565525Z               "line": 713
2026-06-21T08:38:15.1565610Z             },
2026-06-21T08:38:15.1565692Z             {
2026-06-21T08:38:15.1565823Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T08:38:15.1565904Z               "line": 8
2026-06-21T08:38:15.1565990Z             },
2026-06-21T08:38:15.1566072Z             {
2026-06-21T08:38:15.1566325Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T08:38:15.1566420Z               "line": 49
2026-06-21T08:38:15.1566615Z             },
2026-06-21T08:38:15.1566701Z             {
2026-06-21T08:38:15.1566824Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1566911Z               "line": 778
2026-06-21T08:38:15.1566997Z             },
2026-06-21T08:38:15.1567068Z             {
2026-06-21T08:38:15.1567192Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1567274Z               "line": 1213
2026-06-21T08:38:15.1567363Z             },
2026-06-21T08:38:15.1567444Z             {
2026-06-21T08:38:15.1567574Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T08:38:15.1567659Z               "line": 17
2026-06-21T08:38:15.1567745Z             },
2026-06-21T08:38:15.1567821Z             {
2026-06-21T08:38:15.1567937Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T08:38:15.1568021Z               "line": 14
2026-06-21T08:38:15.1568102Z             }
2026-06-21T08:38:15.1568190Z           ]
2026-06-21T08:38:15.1568280Z         },
2026-06-21T08:38:15.1568359Z         "unit": {
2026-06-21T08:38:15.1568449Z           "complete": true,
2026-06-21T08:38:15.1568535Z           "evidence": [
2026-06-21T08:38:15.1568617Z             {
2026-06-21T08:38:15.1568721Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1568807Z               "line": 246
2026-06-21T08:38:15.1568894Z             },
2026-06-21T08:38:15.1569069Z             {
2026-06-21T08:38:15.1569180Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1569270Z               "line": 279
2026-06-21T08:38:15.1569355Z             },
2026-06-21T08:38:15.1569441Z             {
2026-06-21T08:38:15.1569565Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1569651Z               "line": 319
2026-06-21T08:38:15.1569732Z             },
2026-06-21T08:38:15.1569819Z             {
2026-06-21T08:38:15.1569942Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1570028Z               "line": 599
2026-06-21T08:38:15.1570110Z             },
2026-06-21T08:38:15.1570195Z             {
2026-06-21T08:38:15.1570313Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1570405Z               "line": 672
2026-06-21T08:38:15.1570483Z             },
2026-06-21T08:38:15.1570566Z             {
2026-06-21T08:38:15.1570685Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1570780Z               "line": 816
2026-06-21T08:38:15.1570856Z             },
2026-06-21T08:38:15.1570931Z             {
2026-06-21T08:38:15.1571035Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.1571131Z               "line": 595
2026-06-21T08:38:15.1571213Z             },
2026-06-21T08:38:15.1571288Z             {
2026-06-21T08:38:15.1571397Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T08:38:15.1571494Z               "line": 399
2026-06-21T08:38:15.1571574Z             },
2026-06-21T08:38:15.1571659Z             {
2026-06-21T08:38:15.1571766Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1571851Z               "line": 8976
2026-06-21T08:38:15.1571936Z             },
2026-06-21T08:38:15.1572013Z             {
2026-06-21T08:38:15.1572114Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1572199Z               "line": 9300
2026-06-21T08:38:15.1572280Z             },
2026-06-21T08:38:15.1572361Z             {
2026-06-21T08:38:15.1572461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1572542Z               "line": 9717
2026-06-21T08:38:15.1572627Z             }
2026-06-21T08:38:15.1572696Z           ]
2026-06-21T08:38:15.1572781Z         }
2026-06-21T08:38:15.1572856Z       }
2026-06-21T08:38:15.1572937Z     },
2026-06-21T08:38:15.1573011Z     {
2026-06-21T08:38:15.1573105Z       "id": "REQ-SHELL-2",
2026-06-21T08:38:15.1574699Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T08:38:15.1574899Z       "requiredStages": [
2026-06-21T08:38:15.1574990Z         "impl",
2026-06-21T08:38:15.1575070Z         "unit",
2026-06-21T08:38:15.1575151Z         "int"
2026-06-21T08:38:15.1575233Z       ],
2026-06-21T08:38:15.1575315Z       "stages": {
2026-06-21T08:38:15.1575404Z         "doc": {
2026-06-21T08:38:15.1575490Z           "complete": false,
2026-06-21T08:38:15.1575582Z           "evidence": []
2026-06-21T08:38:15.1575658Z         },
2026-06-21T08:38:15.1575742Z         "impl": {
2026-06-21T08:38:15.1575844Z           "complete": true,
2026-06-21T08:38:15.1575925Z           "evidence": [
2026-06-21T08:38:15.1576011Z             {
2026-06-21T08:38:15.1576142Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:15.1576233Z               "line": 217
2026-06-21T08:38:15.1576318Z             },
2026-06-21T08:38:15.1576402Z             {
2026-06-21T08:38:15.1576527Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1576608Z               "line": 403
2026-06-21T08:38:15.1576694Z             },
2026-06-21T08:38:15.1576769Z             {
2026-06-21T08:38:15.1576890Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T08:38:15.1576975Z               "line": 250
2026-06-21T08:38:15.1577065Z             },
2026-06-21T08:38:15.1577151Z             {
2026-06-21T08:38:15.1577270Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.1577356Z               "line": 403
2026-06-21T08:38:15.1577437Z             },
2026-06-21T08:38:15.1577524Z             {
2026-06-21T08:38:15.1577642Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1577733Z               "line": 30
2026-06-21T08:38:15.1577815Z             },
2026-06-21T08:38:15.1577900Z             {
2026-06-21T08:38:15.1578009Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1578086Z               "line": 409
2026-06-21T08:38:15.1578177Z             },
2026-06-21T08:38:15.1578262Z             {
2026-06-21T08:38:15.1578372Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1578458Z               "line": 445
2026-06-21T08:38:15.1578544Z             },
2026-06-21T08:38:15.1578624Z             {
2026-06-21T08:38:15.1578740Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1578826Z               "line": 660
2026-06-21T08:38:15.1578905Z             },
2026-06-21T08:38:15.1579062Z             {
2026-06-21T08:38:15.1579172Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.1579272Z               "line": 348
2026-06-21T08:38:15.1579376Z             },
2026-06-21T08:38:15.1579497Z             {
2026-06-21T08:38:15.1579624Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1579716Z               "line": 115
2026-06-21T08:38:15.1579797Z             },
2026-06-21T08:38:15.1579878Z             {
2026-06-21T08:38:15.1579996Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1580088Z               "line": 120
2026-06-21T08:38:15.1580173Z             },
2026-06-21T08:38:15.1580258Z             {
2026-06-21T08:38:15.1580369Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1580450Z               "line": 374
2026-06-21T08:38:15.1580536Z             },
2026-06-21T08:38:15.1580612Z             {
2026-06-21T08:38:15.1580728Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1580807Z               "line": 500
2026-06-21T08:38:15.1580984Z             },
2026-06-21T08:38:15.1581071Z             {
2026-06-21T08:38:15.1581184Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1581364Z               "line": 24
2026-06-21T08:38:15.1581444Z             },
2026-06-21T08:38:15.1581529Z             {
2026-06-21T08:38:15.1581643Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1581725Z               "line": 76
2026-06-21T08:38:15.1581810Z             },
2026-06-21T08:38:15.1581891Z             {
2026-06-21T08:38:15.1582006Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1582092Z               "line": 154
2026-06-21T08:38:15.1582172Z             },
2026-06-21T08:38:15.1582253Z             {
2026-06-21T08:38:15.1582364Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1582454Z               "line": 177
2026-06-21T08:38:15.1582534Z             },
2026-06-21T08:38:15.1582617Z             {
2026-06-21T08:38:15.1582726Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1582816Z               "line": 273
2026-06-21T08:38:15.1582902Z             },
2026-06-21T08:38:15.1582979Z             {
2026-06-21T08:38:15.1583093Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1583174Z               "line": 456
2026-06-21T08:38:15.1583261Z             },
2026-06-21T08:38:15.1583341Z             {
2026-06-21T08:38:15.1583455Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1583542Z               "line": 538
2026-06-21T08:38:15.1583618Z             },
2026-06-21T08:38:15.1583722Z             {
2026-06-21T08:38:15.1583837Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T08:38:15.1583924Z               "line": 27
2026-06-21T08:38:15.1583999Z             },
2026-06-21T08:38:15.1584084Z             {
2026-06-21T08:38:15.1584202Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T08:38:15.1584283Z               "line": 48
2026-06-21T08:38:15.1584377Z             },
2026-06-21T08:38:15.1584452Z             {
2026-06-21T08:38:15.1584572Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1584654Z               "line": 517
2026-06-21T08:38:15.1584734Z             },
2026-06-21T08:38:15.1584806Z             {
2026-06-21T08:38:15.1584912Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1585002Z               "line": 1921
2026-06-21T08:38:15.1585077Z             },
2026-06-21T08:38:15.1585164Z             {
2026-06-21T08:38:15.1585259Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1585350Z               "line": 6334
2026-06-21T08:38:15.1585440Z             },
2026-06-21T08:38:15.1585508Z             {
2026-06-21T08:38:15.1585612Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1585703Z               "line": 6395
2026-06-21T08:38:15.1585784Z             },
2026-06-21T08:38:15.1585865Z             {
2026-06-21T08:38:15.1585969Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1586069Z               "line": 6423
2026-06-21T08:38:15.1586147Z             },
2026-06-21T08:38:15.1586237Z             {
2026-06-21T08:38:15.1586337Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1586428Z               "line": 6477
2026-06-21T08:38:15.1586509Z             },
2026-06-21T08:38:15.1586594Z             {
2026-06-21T08:38:15.1586698Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1586784Z               "line": 6732
2026-06-21T08:38:15.1586860Z             },
2026-06-21T08:38:15.1586930Z             {
2026-06-21T08:38:15.1587029Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1587106Z               "line": 6792
2026-06-21T08:38:15.1587187Z             },
2026-06-21T08:38:15.1587273Z             {
2026-06-21T08:38:15.1587372Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1587455Z               "line": 298
2026-06-21T08:38:15.1587535Z             },
2026-06-21T08:38:15.1587716Z             {
2026-06-21T08:38:15.1587879Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1588031Z               "line": 339
2026-06-21T08:38:15.1588117Z             }
2026-06-21T08:38:15.1588197Z           ]
2026-06-21T08:38:15.1588288Z         },
2026-06-21T08:38:15.1588365Z         "int": {
2026-06-21T08:38:15.1588451Z           "complete": true,
2026-06-21T08:38:15.1588541Z           "evidence": [
2026-06-21T08:38:15.1588627Z             {
2026-06-21T08:38:15.1588747Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1588831Z               "line": 706
2026-06-21T08:38:15.1588912Z             },
2026-06-21T08:38:15.1589062Z             {
2026-06-21T08:38:15.1589184Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1589266Z               "line": 778
2026-06-21T08:38:15.1589339Z             },
2026-06-21T08:38:15.1589438Z             {
2026-06-21T08:38:15.1589556Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1589656Z               "line": 1213
2026-06-21T08:38:15.1589737Z             },
2026-06-21T08:38:15.1589823Z             {
2026-06-21T08:38:15.1589941Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T08:38:15.1590029Z               "line": 18
2026-06-21T08:38:15.1590114Z             }
2026-06-21T08:38:15.1590189Z           ]
2026-06-21T08:38:15.1590271Z         },
2026-06-21T08:38:15.1590353Z         "unit": {
2026-06-21T08:38:15.1590439Z           "complete": true,
2026-06-21T08:38:15.1590533Z           "evidence": [
2026-06-21T08:38:15.1590615Z             {
2026-06-21T08:38:15.1590733Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1590818Z               "line": 744
2026-06-21T08:38:15.1590905Z             },
2026-06-21T08:38:15.1590987Z             {
2026-06-21T08:38:15.1591096Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T08:38:15.1591181Z               "line": 796
2026-06-21T08:38:15.1591273Z             },
2026-06-21T08:38:15.1591358Z             {
2026-06-21T08:38:15.1591472Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1591564Z               "line": 705
2026-06-21T08:38:15.1591645Z             },
2026-06-21T08:38:15.1591720Z             {
2026-06-21T08:38:15.1591838Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1591920Z               "line": 754
2026-06-21T08:38:15.1592004Z             },
2026-06-21T08:38:15.1592075Z             {
2026-06-21T08:38:15.1592194Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1592270Z               "line": 778
2026-06-21T08:38:15.1592356Z             },
2026-06-21T08:38:15.1592442Z             {
2026-06-21T08:38:15.1592547Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1592628Z               "line": 603
2026-06-21T08:38:15.1592713Z             },
2026-06-21T08:38:15.1592798Z             {
2026-06-21T08:38:15.1592919Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1593000Z               "line": 624
2026-06-21T08:38:15.1593090Z             },
2026-06-21T08:38:15.1593172Z             {
2026-06-21T08:38:15.1593276Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1593367Z               "line": 660
2026-06-21T08:38:15.1593448Z             },
2026-06-21T08:38:15.1593530Z             {
2026-06-21T08:38:15.1593644Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1593739Z               "line": 714
2026-06-21T08:38:15.1593821Z             },
2026-06-21T08:38:15.1593901Z             {
2026-06-21T08:38:15.1594011Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1594097Z               "line": 732
2026-06-21T08:38:15.1594183Z             },
2026-06-21T08:38:15.1594267Z             {
2026-06-21T08:38:15.1594383Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1594475Z               "line": 766
2026-06-21T08:38:15.1594658Z             },
2026-06-21T08:38:15.1594734Z             {
2026-06-21T08:38:15.1594848Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T08:38:15.1595036Z               "line": 841
2026-06-21T08:38:15.1595123Z             },
2026-06-21T08:38:15.1595205Z             {
2026-06-21T08:38:15.1595323Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T08:38:15.1595409Z               "line": 85
2026-06-21T08:38:15.1595496Z             },
2026-06-21T08:38:15.1595576Z             {
2026-06-21T08:38:15.1595680Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1595767Z               "line": 8044
2026-06-21T08:38:15.1595853Z             },
2026-06-21T08:38:15.1595933Z             {
2026-06-21T08:38:15.1596038Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1596130Z               "line": 9054
2026-06-21T08:38:15.1596220Z             },
2026-06-21T08:38:15.1596305Z             {
2026-06-21T08:38:15.1596407Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1596496Z               "line": 9124
2026-06-21T08:38:15.1596582Z             },
2026-06-21T08:38:15.1596664Z             {
2026-06-21T08:38:15.1596754Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1596834Z               "line": 9162
2026-06-21T08:38:15.1596921Z             }
2026-06-21T08:38:15.1597003Z           ]
2026-06-21T08:38:15.1597088Z         }
2026-06-21T08:38:15.1597168Z       }
2026-06-21T08:38:15.1597253Z     },
2026-06-21T08:38:15.1597329Z     {
2026-06-21T08:38:15.1597415Z       "id": "REQ-SHELL-3",
2026-06-21T08:38:15.1599302Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T08:38:15.1599410Z       "requiredStages": [
2026-06-21T08:38:15.1599506Z         "impl",
2026-06-21T08:38:15.1599589Z         "unit",
2026-06-21T08:38:15.1599674Z         "int"
2026-06-21T08:38:15.1599754Z       ],
2026-06-21T08:38:15.1599841Z       "stages": {
2026-06-21T08:38:15.1599917Z         "doc": {
2026-06-21T08:38:15.1600007Z           "complete": false,
2026-06-21T08:38:15.1600101Z           "evidence": []
2026-06-21T08:38:15.1600177Z         },
2026-06-21T08:38:15.1600259Z         "impl": {
2026-06-21T08:38:15.1600355Z           "complete": true,
2026-06-21T08:38:15.1600435Z           "evidence": [
2026-06-21T08:38:15.1600521Z             {
2026-06-21T08:38:15.1600631Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.1600716Z               "line": 229
2026-06-21T08:38:15.1600807Z             },
2026-06-21T08:38:15.1600879Z             {
2026-06-21T08:38:15.1600999Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1601078Z               "line": 36
2026-06-21T08:38:15.1601160Z             },
2026-06-21T08:38:15.1601284Z             {
2026-06-21T08:38:15.1601402Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1601504Z               "line": 137
2026-06-21T08:38:15.1601613Z             },
2026-06-21T08:38:15.1601708Z             {
2026-06-21T08:38:15.1601824Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1601905Z               "line": 153
2026-06-21T08:38:15.1601979Z             },
2026-06-21T08:38:15.1602061Z             {
2026-06-21T08:38:15.1602172Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1602257Z               "line": 165
2026-06-21T08:38:15.1602342Z             },
2026-06-21T08:38:15.1602422Z             {
2026-06-21T08:38:15.1602644Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1602734Z               "line": 242
2026-06-21T08:38:15.1602903Z             },
2026-06-21T08:38:15.1602992Z             {
2026-06-21T08:38:15.1603102Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1603188Z               "line": 267
2026-06-21T08:38:15.1603269Z             },
2026-06-21T08:38:15.1603354Z             {
2026-06-21T08:38:15.1603461Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1603551Z               "line": 293
2026-06-21T08:38:15.1603636Z             },
2026-06-21T08:38:15.1603718Z             {
2026-06-21T08:38:15.1603841Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T08:38:15.1603927Z               "line": 51
2026-06-21T08:38:15.1604012Z             },
2026-06-21T08:38:15.1604100Z             {
2026-06-21T08:38:15.1604204Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1604304Z               "line": 333
2026-06-21T08:38:15.1604386Z             },
2026-06-21T08:38:15.1604466Z             {
2026-06-21T08:38:15.1604585Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1604672Z               "line": 373
2026-06-21T08:38:15.1604758Z             },
2026-06-21T08:38:15.1604832Z             {
2026-06-21T08:38:15.1604948Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1605030Z               "line": 602
2026-06-21T08:38:15.1605119Z             },
2026-06-21T08:38:15.1605199Z             {
2026-06-21T08:38:15.1605323Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1605413Z               "line": 132
2026-06-21T08:38:15.1605497Z             },
2026-06-21T08:38:15.1605578Z             {
2026-06-21T08:38:15.1605703Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1605793Z               "line": 448
2026-06-21T08:38:15.1605864Z             },
2026-06-21T08:38:15.1605950Z             {
2026-06-21T08:38:15.1606070Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T08:38:15.1606164Z               "line": 74
2026-06-21T08:38:15.1606245Z             },
2026-06-21T08:38:15.1606328Z             {
2026-06-21T08:38:15.1606451Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1606541Z               "line": 605
2026-06-21T08:38:15.1606623Z             },
2026-06-21T08:38:15.1606708Z             {
2026-06-21T08:38:15.1606818Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1606909Z               "line": 396
2026-06-21T08:38:15.1606990Z             },
2026-06-21T08:38:15.1607075Z             {
2026-06-21T08:38:15.1607180Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1607267Z               "line": 6518
2026-06-21T08:38:15.1607357Z             }
2026-06-21T08:38:15.1607437Z           ]
2026-06-21T08:38:15.1607519Z         },
2026-06-21T08:38:15.1607602Z         "int": {
2026-06-21T08:38:15.1607700Z           "complete": true,
2026-06-21T08:38:15.1607771Z           "evidence": [
2026-06-21T08:38:15.1607861Z             {
2026-06-21T08:38:15.1607984Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1608064Z               "line": 1262
2026-06-21T08:38:15.1608149Z             },
2026-06-21T08:38:15.1608231Z             {
2026-06-21T08:38:15.1608346Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T08:38:15.1608426Z               "line": 17
2026-06-21T08:38:15.1608507Z             }
2026-06-21T08:38:15.1608594Z           ]
2026-06-21T08:38:15.1608670Z         },
2026-06-21T08:38:15.1608760Z         "unit": {
2026-06-21T08:38:15.1608841Z           "complete": true,
2026-06-21T08:38:15.1608932Z           "evidence": [
2026-06-21T08:38:15.1609093Z             {
2026-06-21T08:38:15.1609213Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1609308Z               "line": 311
2026-06-21T08:38:15.1609413Z             },
2026-06-21T08:38:15.1609595Z             {
2026-06-21T08:38:15.1609714Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1609895Z               "line": 325
2026-06-21T08:38:15.1609971Z             },
2026-06-21T08:38:15.1610052Z             {
2026-06-21T08:38:15.1610172Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1610257Z               "line": 343
2026-06-21T08:38:15.1610343Z             },
2026-06-21T08:38:15.1610425Z             {
2026-06-21T08:38:15.1610544Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1610638Z               "line": 364
2026-06-21T08:38:15.1610714Z             },
2026-06-21T08:38:15.1610795Z             {
2026-06-21T08:38:15.1610910Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T08:38:15.1610990Z               "line": 376
2026-06-21T08:38:15.1611076Z             },
2026-06-21T08:38:15.1611163Z             {
2026-06-21T08:38:15.1611281Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1611362Z               "line": 897
2026-06-21T08:38:15.1611444Z             },
2026-06-21T08:38:15.1611534Z             {
2026-06-21T08:38:15.1611657Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1611745Z               "line": 957
2026-06-21T08:38:15.1611821Z             },
2026-06-21T08:38:15.1611907Z             {
2026-06-21T08:38:15.1612020Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T08:38:15.1612112Z               "line": 338
2026-06-21T08:38:15.1612182Z             },
2026-06-21T08:38:15.1612268Z             {
2026-06-21T08:38:15.1612375Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.1612465Z               "line": 769
2026-06-21T08:38:15.1612544Z             },
2026-06-21T08:38:15.1612631Z             {
2026-06-21T08:38:15.1612737Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1612826Z               "line": 8836
2026-06-21T08:38:15.1612906Z             }
2026-06-21T08:38:15.1612987Z           ]
2026-06-21T08:38:15.1613073Z         }
2026-06-21T08:38:15.1613157Z       }
2026-06-21T08:38:15.1613238Z     },
2026-06-21T08:38:15.1613324Z     {
2026-06-21T08:38:15.1613410Z       "id": "REQ-SHELL-4",
2026-06-21T08:38:15.1615173Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T08:38:15.1615270Z       "requiredStages": [
2026-06-21T08:38:15.1615351Z         "doc",
2026-06-21T08:38:15.1615431Z         "impl",
2026-06-21T08:38:15.1615517Z         "unit",
2026-06-21T08:38:15.1615604Z         "int"
2026-06-21T08:38:15.1615684Z       ],
2026-06-21T08:38:15.1615774Z       "stages": {
2026-06-21T08:38:15.1615859Z         "doc": {
2026-06-21T08:38:15.1615950Z           "complete": true,
2026-06-21T08:38:15.1616043Z           "evidence": [
2026-06-21T08:38:15.1616124Z             {
2026-06-21T08:38:15.1616229Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1616320Z               "line": 281
2026-06-21T08:38:15.1616391Z             },
2026-06-21T08:38:15.1616476Z             {
2026-06-21T08:38:15.1616701Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T08:38:15.1616796Z               "line": 88
2026-06-21T08:38:15.1616878Z             }
2026-06-21T08:38:15.1616959Z           ]
2026-06-21T08:38:15.1617048Z         },
2026-06-21T08:38:15.1617135Z         "impl": {
2026-06-21T08:38:15.1617236Z           "complete": true,
2026-06-21T08:38:15.1617326Z           "evidence": [
2026-06-21T08:38:15.1617498Z             {
2026-06-21T08:38:15.1617621Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.1617769Z               "line": 243
2026-06-21T08:38:15.1617856Z             },
2026-06-21T08:38:15.1617931Z             {
2026-06-21T08:38:15.1618051Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T08:38:15.1618137Z               "line": 61
2026-06-21T08:38:15.1618223Z             },
2026-06-21T08:38:15.1618303Z             {
2026-06-21T08:38:15.1618416Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1618507Z               "line": 218
2026-06-21T08:38:15.1618586Z             },
2026-06-21T08:38:15.1618672Z             {
2026-06-21T08:38:15.1618781Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1618863Z               "line": 245
2026-06-21T08:38:15.1618934Z             },
2026-06-21T08:38:15.1619096Z             {
2026-06-21T08:38:15.1619216Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1619306Z               "line": 616
2026-06-21T08:38:15.1619411Z             },
2026-06-21T08:38:15.1619492Z             {
2026-06-21T08:38:15.1619615Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1619697Z               "line": 1191
2026-06-21T08:38:15.1619788Z             },
2026-06-21T08:38:15.1619869Z             {
2026-06-21T08:38:15.1619982Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1620070Z               "line": 1203
2026-06-21T08:38:15.1620155Z             },
2026-06-21T08:38:15.1620241Z             {
2026-06-21T08:38:15.1620346Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1620437Z               "line": 1244
2026-06-21T08:38:15.1620521Z             },
2026-06-21T08:38:15.1620608Z             {
2026-06-21T08:38:15.1620733Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1620808Z               "line": 456
2026-06-21T08:38:15.1620899Z             },
2026-06-21T08:38:15.1620985Z             {
2026-06-21T08:38:15.1621104Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1621189Z               "line": 44
2026-06-21T08:38:15.1621269Z             },
2026-06-21T08:38:15.1621356Z             {
2026-06-21T08:38:15.1621466Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1621550Z               "line": 208
2026-06-21T08:38:15.1621636Z             },
2026-06-21T08:38:15.1621714Z             {
2026-06-21T08:38:15.1621818Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1621908Z               "line": 227
2026-06-21T08:38:15.1621990Z             },
2026-06-21T08:38:15.1622071Z             {
2026-06-21T08:38:15.1622199Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1622275Z               "line": 253
2026-06-21T08:38:15.1622357Z             },
2026-06-21T08:38:15.1622437Z             {
2026-06-21T08:38:15.1622556Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1622643Z               "line": 272
2026-06-21T08:38:15.1622729Z             },
2026-06-21T08:38:15.1622814Z             {
2026-06-21T08:38:15.1622935Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1623010Z               "line": 392
2026-06-21T08:38:15.1623095Z             },
2026-06-21T08:38:15.1623176Z             {
2026-06-21T08:38:15.1623297Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1623372Z               "line": 421
2026-06-21T08:38:15.1623457Z             },
2026-06-21T08:38:15.1623542Z             {
2026-06-21T08:38:15.1623648Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1623736Z               "line": 439
2026-06-21T08:38:15.1623803Z             },
2026-06-21T08:38:15.1623889Z             {
2026-06-21T08:38:15.1623999Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1624203Z               "line": 458
2026-06-21T08:38:15.1624290Z             },
2026-06-21T08:38:15.1624366Z             {
2026-06-21T08:38:15.1624581Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1624666Z               "line": 486
2026-06-21T08:38:15.1624751Z             },
2026-06-21T08:38:15.1624833Z             {
2026-06-21T08:38:15.1624957Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1625052Z               "line": 624
2026-06-21T08:38:15.1625124Z             },
2026-06-21T08:38:15.1625210Z             {
2026-06-21T08:38:15.1625324Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1625419Z               "line": 829
2026-06-21T08:38:15.1625506Z             },
2026-06-21T08:38:15.1625587Z             {
2026-06-21T08:38:15.1625710Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1625787Z               "line": 435
2026-06-21T08:38:15.1625873Z             },
2026-06-21T08:38:15.1625953Z             {
2026-06-21T08:38:15.1626063Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1626159Z               "line": 6574
2026-06-21T08:38:15.1626249Z             }
2026-06-21T08:38:15.1626334Z           ]
2026-06-21T08:38:15.1626414Z         },
2026-06-21T08:38:15.1626496Z         "int": {
2026-06-21T08:38:15.1626580Z           "complete": true,
2026-06-21T08:38:15.1626669Z           "evidence": [
2026-06-21T08:38:15.1626761Z             {
2026-06-21T08:38:15.1626875Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T08:38:15.1626965Z               "line": 18
2026-06-21T08:38:15.1627046Z             }
2026-06-21T08:38:15.1627124Z           ]
2026-06-21T08:38:15.1627199Z         },
2026-06-21T08:38:15.1627284Z         "unit": {
2026-06-21T08:38:15.1627380Z           "complete": true,
2026-06-21T08:38:15.1627453Z           "evidence": [
2026-06-21T08:38:15.1627538Z             {
2026-06-21T08:38:15.1627647Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1627743Z               "line": 1479
2026-06-21T08:38:15.1627829Z             },
2026-06-21T08:38:15.1627910Z             {
2026-06-21T08:38:15.1628029Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1628106Z               "line": 1508
2026-06-21T08:38:15.1628191Z             },
2026-06-21T08:38:15.1628276Z             {
2026-06-21T08:38:15.1628387Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1628472Z               "line": 504
2026-06-21T08:38:15.1628558Z             },
2026-06-21T08:38:15.1628639Z             {
2026-06-21T08:38:15.1628746Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1628834Z               "line": 514
2026-06-21T08:38:15.1628915Z             },
2026-06-21T08:38:15.1629086Z             {
2026-06-21T08:38:15.1631729Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1631838Z               "line": 531
2026-06-21T08:38:15.1631930Z             },
2026-06-21T08:38:15.1632026Z             {
2026-06-21T08:38:15.1632143Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1632230Z               "line": 543
2026-06-21T08:38:15.1632316Z             },
2026-06-21T08:38:15.1632392Z             {
2026-06-21T08:38:15.1632516Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T08:38:15.1632598Z               "line": 555
2026-06-21T08:38:15.1632679Z             },
2026-06-21T08:38:15.1632764Z             {
2026-06-21T08:38:15.1632875Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1632965Z               "line": 1145
2026-06-21T08:38:15.1633045Z             },
2026-06-21T08:38:15.1633131Z             {
2026-06-21T08:38:15.1633241Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.1633327Z               "line": 776
2026-06-21T08:38:15.1633412Z             }
2026-06-21T08:38:15.1633490Z           ]
2026-06-21T08:38:15.1633575Z         }
2026-06-21T08:38:15.1633651Z       }
2026-06-21T08:38:15.1633867Z     },
2026-06-21T08:38:15.1633951Z     {
2026-06-21T08:38:15.1634036Z       "id": "REQ-SHELL-5",
2026-06-21T08:38:15.1635359Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T08:38:15.1635465Z       "requiredStages": [
2026-06-21T08:38:15.1635545Z         "doc",
2026-06-21T08:38:15.1635626Z         "impl",
2026-06-21T08:38:15.1635712Z         "unit",
2026-06-21T08:38:15.1635789Z         "int"
2026-06-21T08:38:15.1635869Z       ],
2026-06-21T08:38:15.1635955Z       "stages": {
2026-06-21T08:38:15.1636042Z         "doc": {
2026-06-21T08:38:15.1636137Z           "complete": true,
2026-06-21T08:38:15.1636232Z           "evidence": [
2026-06-21T08:38:15.1636318Z             {
2026-06-21T08:38:15.1636414Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1636508Z               "line": 284
2026-06-21T08:38:15.1636590Z             }
2026-06-21T08:38:15.1636672Z           ]
2026-06-21T08:38:15.1636758Z         },
2026-06-21T08:38:15.1636847Z         "impl": {
2026-06-21T08:38:15.1636932Z           "complete": true,
2026-06-21T08:38:15.1637023Z           "evidence": [
2026-06-21T08:38:15.1637103Z             {
2026-06-21T08:38:15.1637225Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T08:38:15.1637306Z               "line": 260
2026-06-21T08:38:15.1637388Z             }
2026-06-21T08:38:15.1637474Z           ]
2026-06-21T08:38:15.1637554Z         },
2026-06-21T08:38:15.1637640Z         "int": {
2026-06-21T08:38:15.1637731Z           "complete": true,
2026-06-21T08:38:15.1637817Z           "evidence": [
2026-06-21T08:38:15.1637897Z             {
2026-06-21T08:38:15.1638013Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1638113Z               "line": 827
2026-06-21T08:38:15.1638183Z             },
2026-06-21T08:38:15.1638269Z             {
2026-06-21T08:38:15.1638389Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1638470Z               "line": 1290
2026-06-21T08:38:15.1638556Z             },
2026-06-21T08:38:15.1638638Z             {
2026-06-21T08:38:15.1638779Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T08:38:15.1638856Z               "line": 23
2026-06-21T08:38:15.1638933Z             }
2026-06-21T08:38:15.1639103Z           ]
2026-06-21T08:38:15.1639185Z         },
2026-06-21T08:38:15.1639262Z         "unit": {
2026-06-21T08:38:15.1639362Z           "complete": true,
2026-06-21T08:38:15.1639451Z           "evidence": [
2026-06-21T08:38:15.1639531Z             {
2026-06-21T08:38:15.1639656Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T08:38:15.1639739Z               "line": 803
2026-06-21T08:38:15.1639830Z             }
2026-06-21T08:38:15.1639911Z           ]
2026-06-21T08:38:15.1639983Z         }
2026-06-21T08:38:15.1640063Z       }
2026-06-21T08:38:15.1640144Z     },
2026-06-21T08:38:15.1640216Z     {
2026-06-21T08:38:15.1640307Z       "id": "REQ-START-1",
2026-06-21T08:38:15.1640502Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T08:38:15.1640594Z       "requiredStages": [
2026-06-21T08:38:15.1640675Z         "impl",
2026-06-21T08:38:15.1640755Z         "unit"
2026-06-21T08:38:15.1640837Z       ],
2026-06-21T08:38:15.1640913Z       "stages": {
2026-06-21T08:38:15.1640998Z         "doc": {
2026-06-21T08:38:15.1641094Z           "complete": false,
2026-06-21T08:38:15.1641175Z           "evidence": []
2026-06-21T08:38:15.1641265Z         },
2026-06-21T08:38:15.1641356Z         "impl": {
2026-06-21T08:38:15.1641446Z           "complete": true,
2026-06-21T08:38:15.1641538Z           "evidence": [
2026-06-21T08:38:15.1641618Z             {
2026-06-21T08:38:15.1641839Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T08:38:15.1641923Z               "line": 16
2026-06-21T08:38:15.1642086Z             }
2026-06-21T08:38:15.1642173Z           ]
2026-06-21T08:38:15.1642252Z         },
2026-06-21T08:38:15.1642328Z         "int": {
2026-06-21T08:38:15.1642413Z           "complete": false,
2026-06-21T08:38:15.1642504Z           "evidence": []
2026-06-21T08:38:15.1642576Z         },
2026-06-21T08:38:15.1642652Z         "unit": {
2026-06-21T08:38:15.1642742Z           "complete": true,
2026-06-21T08:38:15.1642829Z           "evidence": [
2026-06-21T08:38:15.1642910Z             {
2026-06-21T08:38:15.1643019Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T08:38:15.1643116Z               "line": 48
2026-06-21T08:38:15.1643191Z             },
2026-06-21T08:38:15.1643276Z             {
2026-06-21T08:38:15.1643391Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T08:38:15.1643477Z               "line": 63
2026-06-21T08:38:15.1643567Z             }
2026-06-21T08:38:15.1643648Z           ]
2026-06-21T08:38:15.1643730Z         }
2026-06-21T08:38:15.1643816Z       }
2026-06-21T08:38:15.1643896Z     },
2026-06-21T08:38:15.1643968Z     {
2026-06-21T08:38:15.1644060Z       "id": "REQ-START-2",
2026-06-21T08:38:15.1644206Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T08:38:15.1644292Z       "requiredStages": [
2026-06-21T08:38:15.1644374Z         "impl",
2026-06-21T08:38:15.1644455Z         "unit",
2026-06-21T08:38:15.1644530Z         "int"
2026-06-21T08:38:15.1644615Z       ],
2026-06-21T08:38:15.1644696Z       "stages": {
2026-06-21T08:38:15.1644777Z         "doc": {
2026-06-21T08:38:15.1644861Z           "complete": false,
2026-06-21T08:38:15.1644951Z           "evidence": []
2026-06-21T08:38:15.1645043Z         },
2026-06-21T08:38:15.1645124Z         "impl": {
2026-06-21T08:38:15.1645219Z           "complete": true,
2026-06-21T08:38:15.1645300Z           "evidence": [
2026-06-21T08:38:15.1645381Z             {
2026-06-21T08:38:15.1645486Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1645580Z               "line": 16
2026-06-21T08:38:15.1645658Z             },
2026-06-21T08:38:15.1645744Z             {
2026-06-21T08:38:15.1645862Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1645948Z               "line": 115
2026-06-21T08:38:15.1646035Z             },
2026-06-21T08:38:15.1646115Z             {
2026-06-21T08:38:15.1646229Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1646316Z               "line": 300
2026-06-21T08:38:15.1646401Z             }
2026-06-21T08:38:15.1646482Z           ]
2026-06-21T08:38:15.1646563Z         },
2026-06-21T08:38:15.1646650Z         "int": {
2026-06-21T08:38:15.1646740Z           "complete": true,
2026-06-21T08:38:15.1646826Z           "evidence": [
2026-06-21T08:38:15.1646907Z             {
2026-06-21T08:38:15.1647031Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:15.1647126Z               "line": 186
2026-06-21T08:38:15.1647208Z             }
2026-06-21T08:38:15.1647294Z           ]
2026-06-21T08:38:15.1647374Z         },
2026-06-21T08:38:15.1647463Z         "unit": {
2026-06-21T08:38:15.1647549Z           "complete": true,
2026-06-21T08:38:15.1647640Z           "evidence": [
2026-06-21T08:38:15.1647728Z             {
2026-06-21T08:38:15.1647823Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1647910Z               "line": 590
2026-06-21T08:38:15.1647995Z             },
2026-06-21T08:38:15.1648081Z             {
2026-06-21T08:38:15.1648185Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1648273Z               "line": 623
2026-06-21T08:38:15.1648354Z             }
2026-06-21T08:38:15.1648424Z           ]
2026-06-21T08:38:15.1648505Z         }
2026-06-21T08:38:15.1648592Z       }
2026-06-21T08:38:15.1648663Z     },
2026-06-21T08:38:15.1648743Z     {
2026-06-21T08:38:15.1648834Z       "id": "REQ-START-3",
2026-06-21T08:38:15.1649159Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T08:38:15.1649349Z       "requiredStages": [
2026-06-21T08:38:15.1649450Z         "impl",
2026-06-21T08:38:15.1649531Z         "unit",
2026-06-21T08:38:15.1649607Z         "int"
2026-06-21T08:38:15.1649688Z       ],
2026-06-21T08:38:15.1649779Z       "stages": {
2026-06-21T08:38:15.1649870Z         "doc": {
2026-06-21T08:38:15.1649955Z           "complete": false,
2026-06-21T08:38:15.1650035Z           "evidence": []
2026-06-21T08:38:15.1650116Z         },
2026-06-21T08:38:15.1650197Z         "impl": {
2026-06-21T08:38:15.1650286Z           "complete": true,
2026-06-21T08:38:15.1650371Z           "evidence": [
2026-06-21T08:38:15.1650457Z             {
2026-06-21T08:38:15.1650573Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:15.1650657Z               "line": 23
2026-06-21T08:38:15.1650738Z             },
2026-06-21T08:38:15.1650825Z             {
2026-06-21T08:38:15.1650934Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:15.1651019Z               "line": 205
2026-06-21T08:38:15.1651106Z             },
2026-06-21T08:38:15.1651191Z             {
2026-06-21T08:38:15.1651296Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:15.1651377Z               "line": 221
2026-06-21T08:38:15.1651464Z             },
2026-06-21T08:38:15.1651553Z             {
2026-06-21T08:38:15.1651654Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1651736Z               "line": 17
2026-06-21T08:38:15.1651821Z             },
2026-06-21T08:38:15.1651902Z             {
2026-06-21T08:38:15.1652006Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1652103Z               "line": 35
2026-06-21T08:38:15.1652183Z             },
2026-06-21T08:38:15.1652254Z             {
2026-06-21T08:38:15.1652370Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1652451Z               "line": 116
2026-06-21T08:38:15.1652535Z             }
2026-06-21T08:38:15.1652607Z           ]
2026-06-21T08:38:15.1652694Z         },
2026-06-21T08:38:15.1652780Z         "int": {
2026-06-21T08:38:15.1652869Z           "complete": true,
2026-06-21T08:38:15.1652963Z           "evidence": [
2026-06-21T08:38:15.1653041Z             {
2026-06-21T08:38:15.1653151Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T08:38:15.1653240Z               "line": 488
2026-06-21T08:38:15.1653317Z             }
2026-06-21T08:38:15.1653403Z           ]
2026-06-21T08:38:15.1653484Z         },
2026-06-21T08:38:15.1653569Z         "unit": {
2026-06-21T08:38:15.1653656Z           "complete": true,
2026-06-21T08:38:15.1653741Z           "evidence": [
2026-06-21T08:38:15.1653827Z             {
2026-06-21T08:38:15.1653942Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:15.1654028Z               "line": 381
2026-06-21T08:38:15.1654108Z             },
2026-06-21T08:38:15.1654199Z             {
2026-06-21T08:38:15.1654300Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:15.1654390Z               "line": 402
2026-06-21T08:38:15.1654471Z             },
2026-06-21T08:38:15.1654556Z             {
2026-06-21T08:38:15.1654658Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T08:38:15.1654742Z               "line": 412
2026-06-21T08:38:15.1654828Z             },
2026-06-21T08:38:15.1654910Z             {
2026-06-21T08:38:15.1655019Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1655105Z               "line": 591
2026-06-21T08:38:15.1655185Z             },
2026-06-21T08:38:15.1655266Z             {
2026-06-21T08:38:15.1655374Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1655459Z               "line": 624
2026-06-21T08:38:15.1655530Z             },
2026-06-21T08:38:15.1655608Z             {
2026-06-21T08:38:15.1655713Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1655922Z               "line": 657
2026-06-21T08:38:15.1656008Z             }
2026-06-21T08:38:15.1656084Z           ]
2026-06-21T08:38:15.1656223Z         }
2026-06-21T08:38:15.1656304Z       }
2026-06-21T08:38:15.1656384Z     },
2026-06-21T08:38:15.1656460Z     {
2026-06-21T08:38:15.1656548Z       "id": "REQ-START-4",
2026-06-21T08:38:15.1656690Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T08:38:15.1656780Z       "requiredStages": [
2026-06-21T08:38:15.1656867Z         "impl",
2026-06-21T08:38:15.1656947Z         "unit"
2026-06-21T08:38:15.1657033Z       ],
2026-06-21T08:38:15.1657118Z       "stages": {
2026-06-21T08:38:15.1657206Z         "doc": {
2026-06-21T08:38:15.1657295Z           "complete": false,
2026-06-21T08:38:15.1657376Z           "evidence": []
2026-06-21T08:38:15.1657463Z         },
2026-06-21T08:38:15.1657544Z         "impl": {
2026-06-21T08:38:15.1657633Z           "complete": true,
2026-06-21T08:38:15.1657720Z           "evidence": [
2026-06-21T08:38:15.1657806Z             {
2026-06-21T08:38:15.1657925Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1658009Z               "line": 585
2026-06-21T08:38:15.1658095Z             }
2026-06-21T08:38:15.1658176Z           ]
2026-06-21T08:38:15.1658260Z         },
2026-06-21T08:38:15.1658340Z         "int": {
2026-06-21T08:38:15.1658431Z           "complete": false,
2026-06-21T08:38:15.1658523Z           "evidence": []
2026-06-21T08:38:15.1658603Z         },
2026-06-21T08:38:15.1658683Z         "unit": {
2026-06-21T08:38:15.1658765Z           "complete": true,
2026-06-21T08:38:15.1658857Z           "evidence": [
2026-06-21T08:38:15.1658932Z             {
2026-06-21T08:38:15.1659128Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1659214Z               "line": 1026
2026-06-21T08:38:15.1659294Z             }
2026-06-21T08:38:15.1659385Z           ]
2026-06-21T08:38:15.1659467Z         }
2026-06-21T08:38:15.1659552Z       }
2026-06-21T08:38:15.1659623Z     },
2026-06-21T08:38:15.1659709Z     {
2026-06-21T08:38:15.1659805Z       "id": "REQ-START-5",
2026-06-21T08:38:15.1662567Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T08:38:15.1662673Z       "requiredStages": [
2026-06-21T08:38:15.1662766Z         "doc",
2026-06-21T08:38:15.1662843Z         "impl",
2026-06-21T08:38:15.1662926Z         "unit",
2026-06-21T08:38:15.1663007Z         "int"
2026-06-21T08:38:15.1663090Z       ],
2026-06-21T08:38:15.1663182Z       "stages": {
2026-06-21T08:38:15.1663255Z         "doc": {
2026-06-21T08:38:15.1663336Z           "complete": true,
2026-06-21T08:38:15.1663419Z           "evidence": [
2026-06-21T08:38:15.1663505Z             {
2026-06-21T08:38:15.1663601Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1663683Z               "line": 176
2026-06-21T08:38:15.1663767Z             },
2026-06-21T08:38:15.1663848Z             {
2026-06-21T08:38:15.1663982Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T08:38:15.1664068Z               "line": 28
2026-06-21T08:38:15.1664153Z             }
2026-06-21T08:38:15.1664231Z           ]
2026-06-21T08:38:15.1664415Z         },
2026-06-21T08:38:15.1664497Z         "impl": {
2026-06-21T08:38:15.1664584Z           "complete": true,
2026-06-21T08:38:15.1664749Z           "evidence": [
2026-06-21T08:38:15.1664831Z             {
2026-06-21T08:38:15.1664945Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.1665031Z               "line": 26
2026-06-21T08:38:15.1665117Z             },
2026-06-21T08:38:15.1665204Z             {
2026-06-21T08:38:15.1665307Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.1665393Z               "line": 212
2026-06-21T08:38:15.1665470Z             },
2026-06-21T08:38:15.1665557Z             {
2026-06-21T08:38:15.1665669Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.1665764Z               "line": 221
2026-06-21T08:38:15.1665850Z             },
2026-06-21T08:38:15.1665934Z             {
2026-06-21T08:38:15.1666048Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.1666143Z               "line": 485
2026-06-21T08:38:15.1666235Z             },
2026-06-21T08:38:15.1666315Z             {
2026-06-21T08:38:15.1666444Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1666530Z               "line": 36
2026-06-21T08:38:15.1666610Z             },
2026-06-21T08:38:15.1666696Z             {
2026-06-21T08:38:15.1666803Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1666892Z               "line": 118
2026-06-21T08:38:15.1666968Z             },
2026-06-21T08:38:15.1667054Z             {
2026-06-21T08:38:15.1667169Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T08:38:15.1667245Z               "line": 329
2026-06-21T08:38:15.1667330Z             }
2026-06-21T08:38:15.1667412Z           ]
2026-06-21T08:38:15.1667498Z         },
2026-06-21T08:38:15.1667579Z         "int": {
2026-06-21T08:38:15.1667664Z           "complete": true,
2026-06-21T08:38:15.1667756Z           "evidence": [
2026-06-21T08:38:15.1667841Z             {
2026-06-21T08:38:15.1667960Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T08:38:15.1668047Z               "line": 17
2026-06-21T08:38:15.1668132Z             }
2026-06-21T08:38:15.1668212Z           ]
2026-06-21T08:38:15.1668299Z         },
2026-06-21T08:38:15.1668371Z         "unit": {
2026-06-21T08:38:15.1668461Z           "complete": true,
2026-06-21T08:38:15.1668555Z           "evidence": [
2026-06-21T08:38:15.1668631Z             {
2026-06-21T08:38:15.1668755Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.1668844Z               "line": 358
2026-06-21T08:38:15.1668924Z             },
2026-06-21T08:38:15.1669102Z             {
2026-06-21T08:38:15.1669215Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T08:38:15.1669301Z               "line": 371
2026-06-21T08:38:15.1669397Z             },
2026-06-21T08:38:15.1669474Z             {
2026-06-21T08:38:15.1669587Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T08:38:15.1669674Z               "line": 597
2026-06-21T08:38:15.1669760Z             }
2026-06-21T08:38:15.1669835Z           ]
2026-06-21T08:38:15.1669916Z         }
2026-06-21T08:38:15.1669999Z       }
2026-06-21T08:38:15.1670079Z     },
2026-06-21T08:38:15.1670160Z     {
2026-06-21T08:38:15.1670260Z       "id": "REQ-STORE-1",
2026-06-21T08:38:15.1671099Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T08:38:15.1671198Z       "requiredStages": [
2026-06-21T08:38:15.1671275Z         "impl",
2026-06-21T08:38:15.1671355Z         "unit"
2026-06-21T08:38:15.1671439Z       ],
2026-06-21T08:38:15.1671524Z       "stages": {
2026-06-21T08:38:15.1671606Z         "doc": {
2026-06-21T08:38:15.1671702Z           "complete": false,
2026-06-21T08:38:15.1671882Z           "evidence": []
2026-06-21T08:38:15.1671969Z         },
2026-06-21T08:38:15.1672050Z         "impl": {
2026-06-21T08:38:15.1672236Z           "complete": true,
2026-06-21T08:38:15.1672326Z           "evidence": [
2026-06-21T08:38:15.1672402Z             {
2026-06-21T08:38:15.1672537Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1672622Z               "line": 23
2026-06-21T08:38:15.1672708Z             },
2026-06-21T08:38:15.1672788Z             {
2026-06-21T08:38:15.1672904Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1673008Z               "line": 46
2026-06-21T08:38:15.1673083Z             },
2026-06-21T08:38:15.1673166Z             {
2026-06-21T08:38:15.1673284Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1673371Z               "line": 97
2026-06-21T08:38:15.1673456Z             },
2026-06-21T08:38:15.1673538Z             {
2026-06-21T08:38:15.1673665Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1673762Z               "line": 125
2026-06-21T08:38:15.1673848Z             },
2026-06-21T08:38:15.1673933Z             {
2026-06-21T08:38:15.1674051Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1674137Z               "line": 207
2026-06-21T08:38:15.1674218Z             },
2026-06-21T08:38:15.1674304Z             {
2026-06-21T08:38:15.1674417Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1674505Z               "line": 231
2026-06-21T08:38:15.1674591Z             },
2026-06-21T08:38:15.1674675Z             {
2026-06-21T08:38:15.1674805Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1674890Z               "line": 467
2026-06-21T08:38:15.1674975Z             },
2026-06-21T08:38:15.1675057Z             {
2026-06-21T08:38:15.1675182Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1675267Z               "line": 25
2026-06-21T08:38:15.1675348Z             },
2026-06-21T08:38:15.1675430Z             {
2026-06-21T08:38:15.1675538Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1675629Z               "line": 120
2026-06-21T08:38:15.1675706Z             },
2026-06-21T08:38:15.1675793Z             {
2026-06-21T08:38:15.1675915Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1676001Z               "line": 148
2026-06-21T08:38:15.1676084Z             },
2026-06-21T08:38:15.1676164Z             {
2026-06-21T08:38:15.1676286Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1676367Z               "line": 165
2026-06-21T08:38:15.1676453Z             },
2026-06-21T08:38:15.1676541Z             {
2026-06-21T08:38:15.1676665Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1676756Z               "line": 180
2026-06-21T08:38:15.1676837Z             },
2026-06-21T08:38:15.1676927Z             {
2026-06-21T08:38:15.1677052Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1677138Z               "line": 198
2026-06-21T08:38:15.1677223Z             },
2026-06-21T08:38:15.1677309Z             {
2026-06-21T08:38:15.1677433Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1677518Z               "line": 207
2026-06-21T08:38:15.1677599Z             },
2026-06-21T08:38:15.1677682Z             {
2026-06-21T08:38:15.1677801Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T08:38:15.1677886Z               "line": 16
2026-06-21T08:38:15.1677968Z             },
2026-06-21T08:38:15.1678053Z             {
2026-06-21T08:38:15.1678167Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T08:38:15.1678253Z               "line": 63
2026-06-21T08:38:15.1678340Z             }
2026-06-21T08:38:15.1678425Z           ]
2026-06-21T08:38:15.1678506Z         },
2026-06-21T08:38:15.1678588Z         "int": {
2026-06-21T08:38:15.1678763Z           "complete": false,
2026-06-21T08:38:15.1678845Z           "evidence": []
2026-06-21T08:38:15.1678936Z         },
2026-06-21T08:38:15.1679200Z         "unit": {
2026-06-21T08:38:15.1679297Z           "complete": true,
2026-06-21T08:38:15.1679432Z           "evidence": [
2026-06-21T08:38:15.1679517Z             {
2026-06-21T08:38:15.1679643Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1679723Z               "line": 584
2026-06-21T08:38:15.1679809Z             },
2026-06-21T08:38:15.1679890Z             {
2026-06-21T08:38:15.1680015Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1680104Z               "line": 594
2026-06-21T08:38:15.1680181Z             },
2026-06-21T08:38:15.1680258Z             {
2026-06-21T08:38:15.1680377Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1680462Z               "line": 616
2026-06-21T08:38:15.1680539Z             },
2026-06-21T08:38:15.1680620Z             {
2026-06-21T08:38:15.1680744Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1680825Z               "line": 632
2026-06-21T08:38:15.1680911Z             },
2026-06-21T08:38:15.1680996Z             {
2026-06-21T08:38:15.1681125Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T08:38:15.1681203Z               "line": 690
2026-06-21T08:38:15.1681287Z             },
2026-06-21T08:38:15.1681368Z             {
2026-06-21T08:38:15.1681489Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1681569Z               "line": 472
2026-06-21T08:38:15.1681644Z             },
2026-06-21T08:38:15.1681725Z             {
2026-06-21T08:38:15.1681844Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T08:38:15.1681924Z               "line": 507
2026-06-21T08:38:15.1682009Z             },
2026-06-21T08:38:15.1682089Z             {
2026-06-21T08:38:15.1682210Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T08:38:15.1682295Z               "line": 120
2026-06-21T08:38:15.1682385Z             },
2026-06-21T08:38:15.1682462Z             {
2026-06-21T08:38:15.1682581Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T08:38:15.1682657Z               "line": 128
2026-06-21T08:38:15.1682733Z             }
2026-06-21T08:38:15.1682815Z           ]
2026-06-21T08:38:15.1682891Z         }
2026-06-21T08:38:15.1682967Z       }
2026-06-21T08:38:15.1683048Z     },
2026-06-21T08:38:15.1683120Z     {
2026-06-21T08:38:15.1683210Z       "id": "REQ-SUBNET-1",
2026-06-21T08:38:15.1683521Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T08:38:15.1683620Z       "requiredStages": [
2026-06-21T08:38:15.1683706Z         "impl",
2026-06-21T08:38:15.1683788Z         "unit"
2026-06-21T08:38:15.1683873Z       ],
2026-06-21T08:38:15.1683959Z       "stages": {
2026-06-21T08:38:15.1684046Z         "doc": {
2026-06-21T08:38:15.1684136Z           "complete": false,
2026-06-21T08:38:15.1684225Z           "evidence": []
2026-06-21T08:38:15.1684312Z         },
2026-06-21T08:38:15.1684394Z         "impl": {
2026-06-21T08:38:15.1684479Z           "complete": true,
2026-06-21T08:38:15.1684559Z           "evidence": [
2026-06-21T08:38:15.1684639Z             {
2026-06-21T08:38:15.1684765Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1684855Z               "line": 281
2026-06-21T08:38:15.1684935Z             },
2026-06-21T08:38:15.1685007Z             {
2026-06-21T08:38:15.1685136Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1685212Z               "line": 651
2026-06-21T08:38:15.1685302Z             },
2026-06-21T08:38:15.1685384Z             {
2026-06-21T08:38:15.1685480Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1685569Z               "line": 3399
2026-06-21T08:38:15.1685656Z             },
2026-06-21T08:38:15.1685742Z             {
2026-06-21T08:38:15.1685941Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1686038Z               "line": 3709
2026-06-21T08:38:15.1686189Z             },
2026-06-21T08:38:15.1686271Z             {
2026-06-21T08:38:15.1686376Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1686465Z               "line": 3728
2026-06-21T08:38:15.1686557Z             },
2026-06-21T08:38:15.1686639Z             {
2026-06-21T08:38:15.1686738Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1686823Z               "line": 3792
2026-06-21T08:38:15.1686908Z             },
2026-06-21T08:38:15.1686989Z             {
2026-06-21T08:38:15.1687097Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1687192Z               "line": 3834
2026-06-21T08:38:15.1687273Z             },
2026-06-21T08:38:15.1687360Z             {
2026-06-21T08:38:15.1687454Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1687535Z               "line": 4023
2026-06-21T08:38:15.1687617Z             },
2026-06-21T08:38:15.1687703Z             {
2026-06-21T08:38:15.1687807Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1687898Z               "line": 4093
2026-06-21T08:38:15.1687984Z             },
2026-06-21T08:38:15.1688056Z             {
2026-06-21T08:38:15.1688164Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1688256Z               "line": 4317
2026-06-21T08:38:15.1688341Z             },
2026-06-21T08:38:15.1688422Z             {
2026-06-21T08:38:15.1688523Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1688609Z               "line": 4961
2026-06-21T08:38:15.1688690Z             },
2026-06-21T08:38:15.1688775Z             {
2026-06-21T08:38:15.1688886Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1689080Z               "line": 418
2026-06-21T08:38:15.1689172Z             }
2026-06-21T08:38:15.1689248Z           ]
2026-06-21T08:38:15.1689328Z         },
2026-06-21T08:38:15.1689419Z         "int": {
2026-06-21T08:38:15.1689520Z           "complete": false,
2026-06-21T08:38:15.1689600Z           "evidence": []
2026-06-21T08:38:15.1689685Z         },
2026-06-21T08:38:15.1689770Z         "unit": {
2026-06-21T08:38:15.1689852Z           "complete": true,
2026-06-21T08:38:15.1689931Z           "evidence": [
2026-06-21T08:38:15.1690016Z             {
2026-06-21T08:38:15.1690140Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1690222Z               "line": 1584
2026-06-21T08:38:15.1690302Z             },
2026-06-21T08:38:15.1690378Z             {
2026-06-21T08:38:15.1690480Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1690565Z               "line": 9964
2026-06-21T08:38:15.1690645Z             },
2026-06-21T08:38:15.1690731Z             {
2026-06-21T08:38:15.1690832Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1690918Z               "line": 10134
2026-06-21T08:38:15.1690998Z             },
2026-06-21T08:38:15.1691080Z             {
2026-06-21T08:38:15.1691185Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1691266Z               "line": 10141
2026-06-21T08:38:15.1691346Z             },
2026-06-21T08:38:15.1691429Z             {
2026-06-21T08:38:15.1691528Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1691613Z               "line": 10194
2026-06-21T08:38:15.1691700Z             },
2026-06-21T08:38:15.1691782Z             {
2026-06-21T08:38:15.1691880Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1691972Z               "line": 10211
2026-06-21T08:38:15.1692049Z             },
2026-06-21T08:38:15.1692120Z             {
2026-06-21T08:38:15.1692228Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1692308Z               "line": 10241
2026-06-21T08:38:15.1692390Z             },
2026-06-21T08:38:15.1692475Z             {
2026-06-21T08:38:15.1692564Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1692659Z               "line": 10357
2026-06-21T08:38:15.1692860Z             },
2026-06-21T08:38:15.1692935Z             {
2026-06-21T08:38:15.1693037Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1693212Z               "line": 10508
2026-06-21T08:38:15.1693293Z             }
2026-06-21T08:38:15.1693375Z           ]
2026-06-21T08:38:15.1693461Z         }
2026-06-21T08:38:15.1693541Z       }
2026-06-21T08:38:15.1693623Z     },
2026-06-21T08:38:15.1693704Z     {
2026-06-21T08:38:15.1693799Z       "id": "REQ-SUBNET-2",
2026-06-21T08:38:15.1694029Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T08:38:15.1694128Z       "requiredStages": [
2026-06-21T08:38:15.1694214Z         "impl",
2026-06-21T08:38:15.1694296Z         "unit",
2026-06-21T08:38:15.1694381Z         "int"
2026-06-21T08:38:15.1694461Z       ],
2026-06-21T08:38:15.1694542Z       "stages": {
2026-06-21T08:38:15.1694620Z         "doc": {
2026-06-21T08:38:15.1694715Z           "complete": true,
2026-06-21T08:38:15.1694810Z           "evidence": [
2026-06-21T08:38:15.1694892Z             {
2026-06-21T08:38:15.1695058Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T08:38:15.1695147Z               "line": 60
2026-06-21T08:38:15.1695238Z             }
2026-06-21T08:38:15.1695315Z           ]
2026-06-21T08:38:15.1695396Z         },
2026-06-21T08:38:15.1695480Z         "impl": {
2026-06-21T08:38:15.1695562Z           "complete": true,
2026-06-21T08:38:15.1695644Z           "evidence": [
2026-06-21T08:38:15.1695720Z             {
2026-06-21T08:38:15.1695843Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.1695925Z               "line": 886
2026-06-21T08:38:15.1696015Z             },
2026-06-21T08:38:15.1696096Z             {
2026-06-21T08:38:15.1696206Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1696297Z               "line": 2082
2026-06-21T08:38:15.1696383Z             },
2026-06-21T08:38:15.1696468Z             {
2026-06-21T08:38:15.1696593Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1696687Z               "line": 683
2026-06-21T08:38:15.1696778Z             },
2026-06-21T08:38:15.1699393Z             {
2026-06-21T08:38:15.1699549Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T08:38:15.1699635Z               "line": 867
2026-06-21T08:38:15.1699718Z             },
2026-06-21T08:38:15.1699799Z             {
2026-06-21T08:38:15.1699931Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1700018Z               "line": 26
2026-06-21T08:38:15.1700095Z             },
2026-06-21T08:38:15.1700179Z             {
2026-06-21T08:38:15.1700297Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1700383Z               "line": 60
2026-06-21T08:38:15.1700455Z             },
2026-06-21T08:38:15.1700534Z             {
2026-06-21T08:38:15.1700642Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1700739Z               "line": 168
2026-06-21T08:38:15.1700821Z             },
2026-06-21T08:38:15.1700905Z             {
2026-06-21T08:38:15.1701025Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1701111Z               "line": 295
2026-06-21T08:38:15.1701191Z             },
2026-06-21T08:38:15.1701277Z             {
2026-06-21T08:38:15.1701388Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1701474Z               "line": 417
2026-06-21T08:38:15.1701549Z             },
2026-06-21T08:38:15.1701630Z             {
2026-06-21T08:38:15.1701763Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T08:38:15.1701849Z               "line": 252
2026-06-21T08:38:15.1701930Z             },
2026-06-21T08:38:15.1702013Z             {
2026-06-21T08:38:15.1702116Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1702202Z               "line": 3755
2026-06-21T08:38:15.1702289Z             },
2026-06-21T08:38:15.1702498Z             {
2026-06-21T08:38:15.1702595Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1702680Z               "line": 4256
2026-06-21T08:38:15.1702845Z             },
2026-06-21T08:38:15.1702921Z             {
2026-06-21T08:38:15.1703016Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1703100Z               "line": 4892
2026-06-21T08:38:15.1703181Z             }
2026-06-21T08:38:15.1703262Z           ]
2026-06-21T08:38:15.1703349Z         },
2026-06-21T08:38:15.1703434Z         "int": {
2026-06-21T08:38:15.1703529Z           "complete": true,
2026-06-21T08:38:15.1703616Z           "evidence": [
2026-06-21T08:38:15.1703702Z             {
2026-06-21T08:38:15.1703834Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T08:38:15.1703922Z               "line": 22
2026-06-21T08:38:15.1704007Z             },
2026-06-21T08:38:15.1704087Z             {
2026-06-21T08:38:15.1704197Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1704283Z               "line": 645
2026-06-21T08:38:15.1704373Z             },
2026-06-21T08:38:15.1704454Z             {
2026-06-21T08:38:15.1704570Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1704655Z               "line": 887
2026-06-21T08:38:15.1704740Z             }
2026-06-21T08:38:15.1704817Z           ]
2026-06-21T08:38:15.1704899Z         },
2026-06-21T08:38:15.1704984Z         "unit": {
2026-06-21T08:38:15.1705074Z           "complete": true,
2026-06-21T08:38:15.1705152Z           "evidence": [
2026-06-21T08:38:15.1705237Z             {
2026-06-21T08:38:15.1705351Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1705432Z               "line": 586
2026-06-21T08:38:15.1705519Z             },
2026-06-21T08:38:15.1705599Z             {
2026-06-21T08:38:15.1705698Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1705788Z               "line": 10004
2026-06-21T08:38:15.1705865Z             },
2026-06-21T08:38:15.1705951Z             {
2026-06-21T08:38:15.1706055Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1706147Z               "line": 10715
2026-06-21T08:38:15.1706233Z             }
2026-06-21T08:38:15.1706313Z           ]
2026-06-21T08:38:15.1706393Z         }
2026-06-21T08:38:15.1706481Z       }
2026-06-21T08:38:15.1706562Z     },
2026-06-21T08:38:15.1706647Z     {
2026-06-21T08:38:15.1706733Z       "id": "REQ-SUBNET-3",
2026-06-21T08:38:15.1707004Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T08:38:15.1707106Z       "requiredStages": [
2026-06-21T08:38:15.1707196Z         "impl",
2026-06-21T08:38:15.1707281Z         "unit"
2026-06-21T08:38:15.1707347Z       ],
2026-06-21T08:38:15.1707435Z       "stages": {
2026-06-21T08:38:15.1707515Z         "doc": {
2026-06-21T08:38:15.1707595Z           "complete": false,
2026-06-21T08:38:15.1707687Z           "evidence": []
2026-06-21T08:38:15.1707768Z         },
2026-06-21T08:38:15.1707853Z         "impl": {
2026-06-21T08:38:15.1707938Z           "complete": true,
2026-06-21T08:38:15.1708023Z           "evidence": [
2026-06-21T08:38:15.1708105Z             {
2026-06-21T08:38:15.1708236Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1708317Z               "line": 152
2026-06-21T08:38:15.1708398Z             },
2026-06-21T08:38:15.1708485Z             {
2026-06-21T08:38:15.1708607Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1708699Z               "line": 299
2026-06-21T08:38:15.1708771Z             },
2026-06-21T08:38:15.1708833Z             {
2026-06-21T08:38:15.1709038Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1709119Z               "line": 443
2026-06-21T08:38:15.1709185Z             },
2026-06-21T08:38:15.1709261Z             {
2026-06-21T08:38:15.1709405Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1709495Z               "line": 532
2026-06-21T08:38:15.1709672Z             },
2026-06-21T08:38:15.1709757Z             {
2026-06-21T08:38:15.1709996Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1710072Z               "line": 125
2026-06-21T08:38:15.1710153Z             },
2026-06-21T08:38:15.1710234Z             {
2026-06-21T08:38:15.1710349Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1710425Z               "line": 253
2026-06-21T08:38:15.1710506Z             },
2026-06-21T08:38:15.1710588Z             {
2026-06-21T08:38:15.1710712Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1710791Z               "line": 264
2026-06-21T08:38:15.1710872Z             },
2026-06-21T08:38:15.1710948Z             {
2026-06-21T08:38:15.1711052Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1711141Z               "line": 285
2026-06-21T08:38:15.1711222Z             },
2026-06-21T08:38:15.1711299Z             {
2026-06-21T08:38:15.1711418Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1711499Z               "line": 621
2026-06-21T08:38:15.1711580Z             },
2026-06-21T08:38:15.1711661Z             {
2026-06-21T08:38:15.1711775Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1711856Z               "line": 680
2026-06-21T08:38:15.1711943Z             },
2026-06-21T08:38:15.1712024Z             {
2026-06-21T08:38:15.1712147Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.1712239Z               "line": 61
2026-06-21T08:38:15.1712315Z             },
2026-06-21T08:38:15.1712391Z             {
2026-06-21T08:38:15.1712510Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.1712592Z               "line": 90
2026-06-21T08:38:15.1712672Z             },
2026-06-21T08:38:15.1712757Z             {
2026-06-21T08:38:15.1712873Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.1712958Z               "line": 125
2026-06-21T08:38:15.1713034Z             },
2026-06-21T08:38:15.1713116Z             {
2026-06-21T08:38:15.1713241Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T08:38:15.1713324Z               "line": 9
2026-06-21T08:38:15.1713410Z             },
2026-06-21T08:38:15.1713491Z             {
2026-06-21T08:38:15.1713591Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1713670Z               "line": 4093
2026-06-21T08:38:15.1713750Z             },
2026-06-21T08:38:15.1713832Z             {
2026-06-21T08:38:15.1713943Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1714027Z               "line": 445
2026-06-21T08:38:15.1714113Z             }
2026-06-21T08:38:15.1714190Z           ]
2026-06-21T08:38:15.1714271Z         },
2026-06-21T08:38:15.1714351Z         "int": {
2026-06-21T08:38:15.1714447Z           "complete": false,
2026-06-21T08:38:15.1714533Z           "evidence": []
2026-06-21T08:38:15.1714619Z         },
2026-06-21T08:38:15.1714704Z         "unit": {
2026-06-21T08:38:15.1714796Z           "complete": true,
2026-06-21T08:38:15.1714886Z           "evidence": [
2026-06-21T08:38:15.1714967Z             {
2026-06-21T08:38:15.1715101Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1715191Z               "line": 1356
2026-06-21T08:38:15.1715263Z             },
2026-06-21T08:38:15.1715344Z             {
2026-06-21T08:38:15.1715469Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1715548Z               "line": 1713
2026-06-21T08:38:15.1715629Z             },
2026-06-21T08:38:15.1715712Z             {
2026-06-21T08:38:15.1715830Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1715920Z               "line": 892
2026-06-21T08:38:15.1716002Z             },
2026-06-21T08:38:15.1716084Z             {
2026-06-21T08:38:15.1716201Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1716363Z               "line": 991
2026-06-21T08:38:15.1716445Z             },
2026-06-21T08:38:15.1716530Z             {
2026-06-21T08:38:15.1716807Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1716892Z               "line": 1041
2026-06-21T08:38:15.1716973Z             },
2026-06-21T08:38:15.1717055Z             {
2026-06-21T08:38:15.1717160Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1717245Z               "line": 1100
2026-06-21T08:38:15.1717331Z             },
2026-06-21T08:38:15.1717412Z             {
2026-06-21T08:38:15.1717522Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T08:38:15.1717607Z               "line": 234
2026-06-21T08:38:15.1717690Z             },
2026-06-21T08:38:15.1717770Z             {
2026-06-21T08:38:15.1717889Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T08:38:15.1717976Z               "line": 49
2026-06-21T08:38:15.1718056Z             },
2026-06-21T08:38:15.1718141Z             {
2026-06-21T08:38:15.1718237Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1718315Z               "line": 10357
2026-06-21T08:38:15.1718400Z             },
2026-06-21T08:38:15.1718484Z             {
2026-06-21T08:38:15.1718584Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1718665Z               "line": 10463
2026-06-21T08:38:15.1718740Z             },
2026-06-21T08:38:15.1718815Z             {
2026-06-21T08:38:15.1718920Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1719111Z               "line": 10681
2026-06-21T08:38:15.1719196Z             }
2026-06-21T08:38:15.1719283Z           ]
2026-06-21T08:38:15.1719355Z         }
2026-06-21T08:38:15.1719435Z       }
2026-06-21T08:38:15.1719516Z     },
2026-06-21T08:38:15.1719603Z     {
2026-06-21T08:38:15.1719684Z       "id": "REQ-SUBNET-4",
2026-06-21T08:38:15.1719974Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T08:38:15.1720069Z       "requiredStages": [
2026-06-21T08:38:15.1720145Z         "impl",
2026-06-21T08:38:15.1720228Z         "unit"
2026-06-21T08:38:15.1720308Z       ],
2026-06-21T08:38:15.1720394Z       "stages": {
2026-06-21T08:38:15.1720479Z         "doc": {
2026-06-21T08:38:15.1720561Z           "complete": true,
2026-06-21T08:38:15.1720651Z           "evidence": [
2026-06-21T08:38:15.1720733Z             {
2026-06-21T08:38:15.1720895Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T08:38:15.1720975Z               "line": 60
2026-06-21T08:38:15.1721062Z             }
2026-06-21T08:38:15.1721143Z           ]
2026-06-21T08:38:15.1721224Z         },
2026-06-21T08:38:15.1721309Z         "impl": {
2026-06-21T08:38:15.1721389Z           "complete": true,
2026-06-21T08:38:15.1721475Z           "evidence": [
2026-06-21T08:38:15.1721561Z             {
2026-06-21T08:38:15.1721668Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1721744Z               "line": 3399
2026-06-21T08:38:15.1721835Z             },
2026-06-21T08:38:15.1721921Z             {
2026-06-21T08:38:15.1722025Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1722116Z               "line": 4859
2026-06-21T08:38:15.1722189Z             },
2026-06-21T08:38:15.1722275Z             {
2026-06-21T08:38:15.1722378Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1722456Z               "line": 4892
2026-06-21T08:38:15.1722541Z             }
2026-06-21T08:38:15.1722618Z           ]
2026-06-21T08:38:15.1722697Z         },
2026-06-21T08:38:15.1722780Z         "int": {
2026-06-21T08:38:15.1722875Z           "complete": false,
2026-06-21T08:38:15.1722947Z           "evidence": []
2026-06-21T08:38:15.1723032Z         },
2026-06-21T08:38:15.1723128Z         "unit": {
2026-06-21T08:38:15.1723213Z           "complete": true,
2026-06-21T08:38:15.1723299Z           "evidence": [
2026-06-21T08:38:15.1723380Z             {
2026-06-21T08:38:15.1723486Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1723666Z               "line": 10120
2026-06-21T08:38:15.1723753Z             },
2026-06-21T08:38:15.1723918Z             {
2026-06-21T08:38:15.1724007Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1724094Z               "line": 10194
2026-06-21T08:38:15.1724179Z             }
2026-06-21T08:38:15.1724259Z           ]
2026-06-21T08:38:15.1724344Z         }
2026-06-21T08:38:15.1724426Z       }
2026-06-21T08:38:15.1724508Z     },
2026-06-21T08:38:15.1724587Z     {
2026-06-21T08:38:15.1724678Z       "id": "REQ-SUBNET-5",
2026-06-21T08:38:15.1725819Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T08:38:15.1725927Z       "requiredStages": [
2026-06-21T08:38:15.1726019Z         "impl",
2026-06-21T08:38:15.1726094Z         "unit",
2026-06-21T08:38:15.1726180Z         "int"
2026-06-21T08:38:15.1726262Z       ],
2026-06-21T08:38:15.1726349Z       "stages": {
2026-06-21T08:38:15.1726428Z         "doc": {
2026-06-21T08:38:15.1726509Z           "complete": false,
2026-06-21T08:38:15.1726601Z           "evidence": []
2026-06-21T08:38:15.1726682Z         },
2026-06-21T08:38:15.1726770Z         "impl": {
2026-06-21T08:38:15.1726856Z           "complete": true,
2026-06-21T08:38:15.1726952Z           "evidence": [
2026-06-21T08:38:15.1727029Z             {
2026-06-21T08:38:15.1727157Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T08:38:15.1727243Z               "line": 128
2026-06-21T08:38:15.1727324Z             },
2026-06-21T08:38:15.1727405Z             {
2026-06-21T08:38:15.1727528Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T08:38:15.1727611Z               "line": 413
2026-06-21T08:38:15.1727696Z             },
2026-06-21T08:38:15.1727776Z             {
2026-06-21T08:38:15.1727896Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1727987Z               "line": 74
2026-06-21T08:38:15.1728077Z             },
2026-06-21T08:38:15.1728148Z             {
2026-06-21T08:38:15.1728264Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.1728354Z               "line": 332
2026-06-21T08:38:15.1728430Z             },
2026-06-21T08:38:15.1728512Z             {
2026-06-21T08:38:15.1728626Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.1728711Z               "line": 621
2026-06-21T08:38:15.1728787Z             },
2026-06-21T08:38:15.1728875Z             {
2026-06-21T08:38:15.1729087Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T08:38:15.1729172Z               "line": 31
2026-06-21T08:38:15.1729253Z             },
2026-06-21T08:38:15.1729333Z             {
2026-06-21T08:38:15.1729480Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T08:38:15.1729572Z               "line": 50
2026-06-21T08:38:15.1729662Z             },
2026-06-21T08:38:15.1729747Z             {
2026-06-21T08:38:15.1729867Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T08:38:15.1729957Z               "line": 69
2026-06-21T08:38:15.1730038Z             },
2026-06-21T08:38:15.1730119Z             {
2026-06-21T08:38:15.1730234Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T08:38:15.1730319Z               "line": 113
2026-06-21T08:38:15.1730400Z             },
2026-06-21T08:38:15.1730478Z             {
2026-06-21T08:38:15.1730601Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T08:38:15.1730682Z               "line": 25
2026-06-21T08:38:15.1730763Z             },
2026-06-21T08:38:15.1730845Z             {
2026-06-21T08:38:15.1730968Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T08:38:15.1731155Z               "line": 34
2026-06-21T08:38:15.1731235Z             },
2026-06-21T08:38:15.1731321Z             {
2026-06-21T08:38:15.1731535Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T08:38:15.1731626Z               "line": 17
2026-06-21T08:38:15.1731708Z             },
2026-06-21T08:38:15.1731794Z             {
2026-06-21T08:38:15.1731902Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1731987Z               "line": 4817
2026-06-21T08:38:15.1732069Z             },
2026-06-21T08:38:15.1732149Z             {
2026-06-21T08:38:15.1732261Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T08:38:15.1732352Z               "line": 419
2026-06-21T08:38:15.1732429Z             }
2026-06-21T08:38:15.1732515Z           ]
2026-06-21T08:38:15.1732595Z         },
2026-06-21T08:38:15.1732681Z         "int": {
2026-06-21T08:38:15.1732768Z           "complete": true,
2026-06-21T08:38:15.1732853Z           "evidence": [
2026-06-21T08:38:15.1732933Z             {
2026-06-21T08:38:15.1733054Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1733149Z               "line": 821
2026-06-21T08:38:15.1733229Z             }
2026-06-21T08:38:15.1733315Z           ]
2026-06-21T08:38:15.1733397Z         },
2026-06-21T08:38:15.1733477Z         "unit": {
2026-06-21T08:38:15.1733558Z           "complete": true,
2026-06-21T08:38:15.1733650Z           "evidence": [
2026-06-21T08:38:15.1733731Z             {
2026-06-21T08:38:15.1733850Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:15.1733931Z               "line": 341
2026-06-21T08:38:15.1734012Z             },
2026-06-21T08:38:15.1734093Z             {
2026-06-21T08:38:15.1734212Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T08:38:15.1734299Z               "line": 1115
2026-06-21T08:38:15.1734380Z             },
2026-06-21T08:38:15.1734464Z             {
2026-06-21T08:38:15.1734587Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T08:38:15.1734668Z               "line": 151
2026-06-21T08:38:15.1734758Z             },
2026-06-21T08:38:15.1734842Z             {
2026-06-21T08:38:15.1734967Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T08:38:15.1735054Z               "line": 61
2026-06-21T08:38:15.1735133Z             },
2026-06-21T08:38:15.1735219Z             {
2026-06-21T08:38:15.1735335Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T08:38:15.1735425Z               "line": 111
2026-06-21T08:38:15.1735510Z             },
2026-06-21T08:38:15.1735582Z             {
2026-06-21T08:38:15.1735711Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T08:38:15.1735796Z               "line": 138
2026-06-21T08:38:15.1735883Z             },
2026-06-21T08:38:15.1735964Z             {
2026-06-21T08:38:15.1736083Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T08:38:15.1736173Z               "line": 148
2026-06-21T08:38:15.1736255Z             },
2026-06-21T08:38:15.1736340Z             {
2026-06-21T08:38:15.1736435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1736532Z               "line": 10021
2026-06-21T08:38:15.1736617Z             }
2026-06-21T08:38:15.1736702Z           ]
2026-06-21T08:38:15.1736783Z         }
2026-06-21T08:38:15.1736865Z       }
2026-06-21T08:38:15.1736951Z     },
2026-06-21T08:38:15.1737036Z     {
2026-06-21T08:38:15.1737132Z       "id": "REQ-SUBNET-6",
2026-06-21T08:38:15.1737808Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T08:38:15.1737899Z       "requiredStages": [
2026-06-21T08:38:15.1737984Z         "impl",
2026-06-21T08:38:15.1738065Z         "unit"
2026-06-21T08:38:15.1738152Z       ],
2026-06-21T08:38:15.1738237Z       "stages": {
2026-06-21T08:38:15.1738408Z         "doc": {
2026-06-21T08:38:15.1738510Z           "complete": false,
2026-06-21T08:38:15.1738589Z           "evidence": []
2026-06-21T08:38:15.1738737Z         },
2026-06-21T08:38:15.1738825Z         "impl": {
2026-06-21T08:38:15.1738918Z           "complete": true,
2026-06-21T08:38:15.1739086Z           "evidence": [
2026-06-21T08:38:15.1739172Z             {
2026-06-21T08:38:15.1739290Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1739386Z               "line": 254
2026-06-21T08:38:15.1739464Z             },
2026-06-21T08:38:15.1739542Z             {
2026-06-21T08:38:15.1739642Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1739723Z               "line": 4475
2026-06-21T08:38:15.1739804Z             },
2026-06-21T08:38:15.1739897Z             {
2026-06-21T08:38:15.1739997Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1740084Z               "line": 4492
2026-06-21T08:38:15.1740165Z             },
2026-06-21T08:38:15.1740250Z             {
2026-06-21T08:38:15.1740355Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1740442Z               "line": 4545
2026-06-21T08:38:15.1740527Z             },
2026-06-21T08:38:15.1740608Z             {
2026-06-21T08:38:15.1740714Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1740794Z               "line": 4568
2026-06-21T08:38:15.1740879Z             }
2026-06-21T08:38:15.1740960Z           ]
2026-06-21T08:38:15.1741048Z         },
2026-06-21T08:38:15.1741128Z         "int": {
2026-06-21T08:38:15.1741218Z           "complete": false,
2026-06-21T08:38:15.1741309Z           "evidence": []
2026-06-21T08:38:15.1741386Z         },
2026-06-21T08:38:15.1741471Z         "unit": {
2026-06-21T08:38:15.1741594Z           "complete": true,
2026-06-21T08:38:15.1741710Z           "evidence": [
2026-06-21T08:38:15.1741795Z             {
2026-06-21T08:38:15.1741895Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1741987Z               "line": 10035
2026-06-21T08:38:15.1742058Z             },
2026-06-21T08:38:15.1742138Z             {
2026-06-21T08:38:15.1742234Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1742321Z               "line": 10068
2026-06-21T08:38:15.1742396Z             },
2026-06-21T08:38:15.1742481Z             {
2026-06-21T08:38:15.1742576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1742657Z               "line": 10077
2026-06-21T08:38:15.1742741Z             }
2026-06-21T08:38:15.1742822Z           ]
2026-06-21T08:38:15.1742912Z         }
2026-06-21T08:38:15.1742994Z       }
2026-06-21T08:38:15.1743075Z     },
2026-06-21T08:38:15.1743146Z     {
2026-06-21T08:38:15.1743232Z       "id": "REQ-SUBNET-7",
2026-06-21T08:38:15.1744830Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T08:38:15.1744935Z       "requiredStages": [
2026-06-21T08:38:15.1745010Z         "impl",
2026-06-21T08:38:15.1745090Z         "unit"
2026-06-21T08:38:15.1745176Z       ],
2026-06-21T08:38:15.1745257Z       "stages": {
2026-06-21T08:38:15.1745341Z         "doc": {
2026-06-21T08:38:15.1745426Z           "complete": false,
2026-06-21T08:38:15.1745522Z           "evidence": []
2026-06-21T08:38:15.1745604Z         },
2026-06-21T08:38:15.1745689Z         "impl": {
2026-06-21T08:38:15.1745779Z           "complete": true,
2026-06-21T08:38:15.1745871Z           "evidence": [
2026-06-21T08:38:15.1745942Z             {
2026-06-21T08:38:15.1746070Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T08:38:15.1746266Z               "line": 17
2026-06-21T08:38:15.1746347Z             },
2026-06-21T08:38:15.1746433Z             {
2026-06-21T08:38:15.1746643Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1746733Z               "line": 103
2026-06-21T08:38:15.1746820Z             },
2026-06-21T08:38:15.1746900Z             {
2026-06-21T08:38:15.1747024Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T08:38:15.1747111Z               "line": 312
2026-06-21T08:38:15.1747196Z             },
2026-06-21T08:38:15.1747267Z             {
2026-06-21T08:38:15.1747402Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T08:38:15.1747488Z               "line": 131
2026-06-21T08:38:15.1747567Z             },
2026-06-21T08:38:15.1747648Z             {
2026-06-21T08:38:15.1747779Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1747868Z               "line": 160
2026-06-21T08:38:15.1747953Z             },
2026-06-21T08:38:15.1748034Z             {
2026-06-21T08:38:15.1748159Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1748253Z               "line": 447
2026-06-21T08:38:15.1748343Z             },
2026-06-21T08:38:15.1748421Z             {
2026-06-21T08:38:15.1748540Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1748625Z               "line": 670
2026-06-21T08:38:15.1748707Z             },
2026-06-21T08:38:15.1748792Z             {
2026-06-21T08:38:15.1748911Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1749074Z               "line": 710
2026-06-21T08:38:15.1749145Z             },
2026-06-21T08:38:15.1749230Z             {
2026-06-21T08:38:15.1749355Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1749459Z               "line": 766
2026-06-21T08:38:15.1749536Z             },
2026-06-21T08:38:15.1749617Z             {
2026-06-21T08:38:15.1749751Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1749850Z               "line": 136
2026-06-21T08:38:15.1749932Z             },
2026-06-21T08:38:15.1750014Z             {
2026-06-21T08:38:15.1750136Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1750221Z               "line": 139
2026-06-21T08:38:15.1750307Z             }
2026-06-21T08:38:15.1750392Z           ]
2026-06-21T08:38:15.1750472Z         },
2026-06-21T08:38:15.1750552Z         "int": {
2026-06-21T08:38:15.1750639Z           "complete": false,
2026-06-21T08:38:15.1750726Z           "evidence": []
2026-06-21T08:38:15.1750815Z         },
2026-06-21T08:38:15.1750896Z         "unit": {
2026-06-21T08:38:15.1750983Z           "complete": true,
2026-06-21T08:38:15.1751064Z           "evidence": [
2026-06-21T08:38:15.1751149Z             {
2026-06-21T08:38:15.1751264Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T08:38:15.1751354Z               "line": 136
2026-06-21T08:38:15.1751435Z             },
2026-06-21T08:38:15.1751516Z             {
2026-06-21T08:38:15.1751622Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T08:38:15.1751717Z               "line": 156
2026-06-21T08:38:15.1751807Z             },
2026-06-21T08:38:15.1751888Z             {
2026-06-21T08:38:15.1752012Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1752093Z               "line": 987
2026-06-21T08:38:15.1752174Z             },
2026-06-21T08:38:15.1752257Z             {
2026-06-21T08:38:15.1752379Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T08:38:15.1752470Z               "line": 1009
2026-06-21T08:38:15.1752557Z             },
2026-06-21T08:38:15.1752637Z             {
2026-06-21T08:38:15.1752761Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T08:38:15.1752847Z               "line": 1419
2026-06-21T08:38:15.1752924Z             },
2026-06-21T08:38:15.1753008Z             {
2026-06-21T08:38:15.1753136Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T08:38:15.1753334Z               "line": 1036
2026-06-21T08:38:15.1753506Z             }
2026-06-21T08:38:15.1753588Z           ]
2026-06-21T08:38:15.1753668Z         }
2026-06-21T08:38:15.1753753Z       }
2026-06-21T08:38:15.1753836Z     },
2026-06-21T08:38:15.1753916Z     {
2026-06-21T08:38:15.1754011Z       "id": "REQ-SUBNET-8",
2026-06-21T08:38:15.1755109Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T08:38:15.1755208Z       "requiredStages": [
2026-06-21T08:38:15.1755289Z         "impl",
2026-06-21T08:38:15.1755376Z         "unit"
2026-06-21T08:38:15.1755457Z       ],
2026-06-21T08:38:15.1755547Z       "stages": {
2026-06-21T08:38:15.1755636Z         "doc": {
2026-06-21T08:38:15.1755727Z           "complete": false,
2026-06-21T08:38:15.1755817Z           "evidence": []
2026-06-21T08:38:15.1755896Z         },
2026-06-21T08:38:15.1755986Z         "impl": {
2026-06-21T08:38:15.1756083Z           "complete": true,
2026-06-21T08:38:15.1756169Z           "evidence": [
2026-06-21T08:38:15.1756254Z             {
2026-06-21T08:38:15.1756358Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1756445Z               "line": 3835
2026-06-21T08:38:15.1756517Z             },
2026-06-21T08:38:15.1756601Z             {
2026-06-21T08:38:15.1756708Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1756793Z               "line": 3864
2026-06-21T08:38:15.1756865Z             },
2026-06-21T08:38:15.1756940Z             {
2026-06-21T08:38:15.1757046Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1757131Z               "line": 3881
2026-06-21T08:38:15.1757217Z             },
2026-06-21T08:38:15.1757303Z             {
2026-06-21T08:38:15.1757394Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1757484Z               "line": 3904
2026-06-21T08:38:15.1757565Z             },
2026-06-21T08:38:15.1757647Z             {
2026-06-21T08:38:15.1757742Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1757832Z               "line": 4318
2026-06-21T08:38:15.1757913Z             }
2026-06-21T08:38:15.1757995Z           ]
2026-06-21T08:38:15.1758076Z         },
2026-06-21T08:38:15.1758156Z         "int": {
2026-06-21T08:38:15.1758248Z           "complete": false,
2026-06-21T08:38:15.1758324Z           "evidence": []
2026-06-21T08:38:15.1758414Z         },
2026-06-21T08:38:15.1758503Z         "unit": {
2026-06-21T08:38:15.1758594Z           "complete": true,
2026-06-21T08:38:15.1758671Z           "evidence": [
2026-06-21T08:38:15.1758752Z             {
2026-06-21T08:38:15.1758856Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1758938Z               "line": 10225
2026-06-21T08:38:15.1759100Z             },
2026-06-21T08:38:15.1759175Z             {
2026-06-21T08:38:15.1759277Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1759362Z               "line": 10241
2026-06-21T08:38:15.1759438Z             }
2026-06-21T08:38:15.1759519Z           ]
2026-06-21T08:38:15.1759601Z         }
2026-06-21T08:38:15.1759681Z       }
2026-06-21T08:38:15.1759767Z     },
2026-06-21T08:38:15.1759848Z     {
2026-06-21T08:38:15.1759940Z       "id": "REQ-TERM-1",
2026-06-21T08:38:15.1760101Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T08:38:15.1760202Z       "requiredStages": [
2026-06-21T08:38:15.1760283Z         "impl",
2026-06-21T08:38:15.1760367Z         "unit"
2026-06-21T08:38:15.1760444Z       ],
2026-06-21T08:38:15.1760531Z       "stages": {
2026-06-21T08:38:15.1760612Z         "doc": {
2026-06-21T08:38:15.1760701Z           "complete": false,
2026-06-21T08:38:15.1760786Z           "evidence": []
2026-06-21T08:38:15.1760981Z         },
2026-06-21T08:38:15.1761070Z         "impl": {
2026-06-21T08:38:15.1761161Z           "complete": true,
2026-06-21T08:38:15.1761328Z           "evidence": [
2026-06-21T08:38:15.1761413Z             {
2026-06-21T08:38:15.1761518Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T08:38:15.1761609Z               "line": 59
2026-06-21T08:38:15.1761689Z             },
2026-06-21T08:38:15.1761770Z             {
2026-06-21T08:38:15.1761877Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T08:38:15.1761958Z               "line": 234
2026-06-21T08:38:15.1762038Z             },
2026-06-21T08:38:15.1762115Z             {
2026-06-21T08:38:15.1762238Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T08:38:15.1762315Z               "line": 100
2026-06-21T08:38:15.1762400Z             }
2026-06-21T08:38:15.1762487Z           ]
2026-06-21T08:38:15.1762562Z         },
2026-06-21T08:38:15.1762648Z         "int": {
2026-06-21T08:38:15.1762729Z           "complete": false,
2026-06-21T08:38:15.1762826Z           "evidence": []
2026-06-21T08:38:15.1762901Z         },
2026-06-21T08:38:15.1762996Z         "unit": {
2026-06-21T08:38:15.1763083Z           "complete": true,
2026-06-21T08:38:15.1763169Z           "evidence": [
2026-06-21T08:38:15.1763253Z             {
2026-06-21T08:38:15.1763374Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T08:38:15.1763456Z               "line": 24
2026-06-21T08:38:15.1763535Z             },
2026-06-21T08:38:15.1763620Z             {
2026-06-21T08:38:15.1763730Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T08:38:15.1763815Z               "line": 56
2026-06-21T08:38:15.1763899Z             }
2026-06-21T08:38:15.1763980Z           ]
2026-06-21T08:38:15.1764066Z         }
2026-06-21T08:38:15.1764148Z       }
2026-06-21T08:38:15.1766691Z     },
2026-06-21T08:38:15.1766795Z     {
2026-06-21T08:38:15.1766895Z       "id": "REQ-TERM-2",
2026-06-21T08:38:15.1767082Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T08:38:15.1767180Z       "requiredStages": [
2026-06-21T08:38:15.1767268Z         "impl",
2026-06-21T08:38:15.1767353Z         "unit"
2026-06-21T08:38:15.1767434Z       ],
2026-06-21T08:38:15.1767519Z       "stages": {
2026-06-21T08:38:15.1767606Z         "doc": {
2026-06-21T08:38:15.1767696Z           "complete": false,
2026-06-21T08:38:15.1767786Z           "evidence": []
2026-06-21T08:38:15.1767868Z         },
2026-06-21T08:38:15.1767950Z         "impl": {
2026-06-21T08:38:15.1768049Z           "complete": true,
2026-06-21T08:38:15.1768125Z           "evidence": [
2026-06-21T08:38:15.1768212Z             {
2026-06-21T08:38:15.1768335Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T08:38:15.1768416Z               "line": 117
2026-06-21T08:38:15.1768503Z             },
2026-06-21T08:38:15.1768579Z             {
2026-06-21T08:38:15.1768692Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T08:38:15.1768783Z               "line": 127
2026-06-21T08:38:15.1768861Z             }
2026-06-21T08:38:15.1769035Z           ]
2026-06-21T08:38:15.1769116Z         },
2026-06-21T08:38:15.1769197Z         "int": {
2026-06-21T08:38:15.1769284Z           "complete": false,
2026-06-21T08:38:15.1769373Z           "evidence": []
2026-06-21T08:38:15.1769459Z         },
2026-06-21T08:38:15.1769541Z         "unit": {
2026-06-21T08:38:15.1769632Z           "complete": true,
2026-06-21T08:38:15.1769721Z           "evidence": [
2026-06-21T08:38:15.1769803Z             {
2026-06-21T08:38:15.1769918Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T08:38:15.1769998Z               "line": 46
2026-06-21T08:38:15.1770084Z             },
2026-06-21T08:38:15.1770166Z             {
2026-06-21T08:38:15.1770279Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T08:38:15.1770365Z               "line": 77
2026-06-21T08:38:15.1770447Z             }
2026-06-21T08:38:15.1770528Z           ]
2026-06-21T08:38:15.1770757Z         }
2026-06-21T08:38:15.1770848Z       }
2026-06-21T08:38:15.1770927Z     },
2026-06-21T08:38:15.1771008Z     {
2026-06-21T08:38:15.1771172Z       "id": "REQ-TERM-3",
2026-06-21T08:38:15.1771318Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T08:38:15.1771404Z       "requiredStages": [
2026-06-21T08:38:15.1771490Z         "impl",
2026-06-21T08:38:15.1771578Z         "unit"
2026-06-21T08:38:15.1771654Z       ],
2026-06-21T08:38:15.1771740Z       "stages": {
2026-06-21T08:38:15.1771821Z         "doc": {
2026-06-21T08:38:15.1771912Z           "complete": false,
2026-06-21T08:38:15.1771992Z           "evidence": []
2026-06-21T08:38:15.1772074Z         },
2026-06-21T08:38:15.1772155Z         "impl": {
2026-06-21T08:38:15.1772245Z           "complete": true,
2026-06-21T08:38:15.1772331Z           "evidence": [
2026-06-21T08:38:15.1772413Z             {
2026-06-21T08:38:15.1772532Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T08:38:15.1772617Z               "line": 71
2026-06-21T08:38:15.1772699Z             }
2026-06-21T08:38:15.1772780Z           ]
2026-06-21T08:38:15.1772861Z         },
2026-06-21T08:38:15.1772951Z         "int": {
2026-06-21T08:38:15.1773033Z           "complete": false,
2026-06-21T08:38:15.1773123Z           "evidence": []
2026-06-21T08:38:15.1773195Z         },
2026-06-21T08:38:15.1773280Z         "unit": {
2026-06-21T08:38:15.1773367Z           "complete": true,
2026-06-21T08:38:15.1773456Z           "evidence": [
2026-06-21T08:38:15.1773537Z             {
2026-06-21T08:38:15.1773644Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T08:38:15.1773730Z               "line": 37
2026-06-21T08:38:15.1773809Z             },
2026-06-21T08:38:15.1773890Z             {
2026-06-21T08:38:15.1773997Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T08:38:15.1774082Z               "line": 67
2026-06-21T08:38:15.1774161Z             }
2026-06-21T08:38:15.1774241Z           ]
2026-06-21T08:38:15.1774323Z         }
2026-06-21T08:38:15.1774408Z       }
2026-06-21T08:38:15.1774488Z     },
2026-06-21T08:38:15.1774568Z     {
2026-06-21T08:38:15.1774665Z       "id": "REQ-TERM-4",
2026-06-21T08:38:15.1775131Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T08:38:15.1775212Z       "requiredStages": [
2026-06-21T08:38:15.1775300Z         "impl",
2026-06-21T08:38:15.1775380Z         "unit",
2026-06-21T08:38:15.1775460Z         "int"
2026-06-21T08:38:15.1775547Z       ],
2026-06-21T08:38:15.1775629Z       "stages": {
2026-06-21T08:38:15.1775704Z         "doc": {
2026-06-21T08:38:15.1775794Z           "complete": false,
2026-06-21T08:38:15.1775886Z           "evidence": []
2026-06-21T08:38:15.1775967Z         },
2026-06-21T08:38:15.1776051Z         "impl": {
2026-06-21T08:38:15.1776143Z           "complete": true,
2026-06-21T08:38:15.1776229Z           "evidence": [
2026-06-21T08:38:15.1776314Z             {
2026-06-21T08:38:15.1776429Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1776516Z               "line": 37
2026-06-21T08:38:15.1776587Z             },
2026-06-21T08:38:15.1776662Z             {
2026-06-21T08:38:15.1776780Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1776866Z               "line": 25
2026-06-21T08:38:15.1776946Z             },
2026-06-21T08:38:15.1777026Z             {
2026-06-21T08:38:15.1777150Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1777231Z               "line": 114
2026-06-21T08:38:15.1777317Z             },
2026-06-21T08:38:15.1777403Z             {
2026-06-21T08:38:15.1777518Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1777599Z               "line": 267
2026-06-21T08:38:15.1777679Z             },
2026-06-21T08:38:15.1777755Z             {
2026-06-21T08:38:15.1777870Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1778037Z               "line": 289
2026-06-21T08:38:15.1778123Z             },
2026-06-21T08:38:15.1778261Z             {
2026-06-21T08:38:15.1778375Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1778452Z               "line": 307
2026-06-21T08:38:15.1778533Z             },
2026-06-21T08:38:15.1778614Z             {
2026-06-21T08:38:15.1778723Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T08:38:15.1778811Z               "line": 33
2026-06-21T08:38:15.1778890Z             },
2026-06-21T08:38:15.1779063Z             {
2026-06-21T08:38:15.1779182Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1779272Z               "line": 52
2026-06-21T08:38:15.1779358Z             },
2026-06-21T08:38:15.1779426Z             {
2026-06-21T08:38:15.1779539Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1779624Z               "line": 180
2026-06-21T08:38:15.1779705Z             },
2026-06-21T08:38:15.1779791Z             {
2026-06-21T08:38:15.1779900Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1779995Z               "line": 190
2026-06-21T08:38:15.1780068Z             },
2026-06-21T08:38:15.1780149Z             {
2026-06-21T08:38:15.1780248Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1780334Z               "line": 250
2026-06-21T08:38:15.1780416Z             },
2026-06-21T08:38:15.1780497Z             {
2026-06-21T08:38:15.1780606Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1780682Z               "line": 284
2026-06-21T08:38:15.1780768Z             },
2026-06-21T08:38:15.1780849Z             {
2026-06-21T08:38:15.1780963Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1781046Z               "line": 295
2026-06-21T08:38:15.1781126Z             },
2026-06-21T08:38:15.1781212Z             {
2026-06-21T08:38:15.1781317Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1781403Z               "line": 1193
2026-06-21T08:38:15.1781483Z             }
2026-06-21T08:38:15.1781569Z           ]
2026-06-21T08:38:15.1781646Z         },
2026-06-21T08:38:15.1781732Z         "int": {
2026-06-21T08:38:15.1781831Z           "complete": true,
2026-06-21T08:38:15.1781912Z           "evidence": [
2026-06-21T08:38:15.1781997Z             {
2026-06-21T08:38:15.1782110Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T08:38:15.1782195Z               "line": 18
2026-06-21T08:38:15.1782281Z             }
2026-06-21T08:38:15.1782358Z           ]
2026-06-21T08:38:15.1782443Z         },
2026-06-21T08:38:15.1782528Z         "unit": {
2026-06-21T08:38:15.1782615Z           "complete": true,
2026-06-21T08:38:15.1782697Z           "evidence": [
2026-06-21T08:38:15.1782777Z             {
2026-06-21T08:38:15.1782881Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1782973Z               "line": 364
2026-06-21T08:38:15.1783058Z             },
2026-06-21T08:38:15.1783144Z             {
2026-06-21T08:38:15.1783260Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1783340Z               "line": 416
2026-06-21T08:38:15.1783426Z             },
2026-06-21T08:38:15.1783506Z             {
2026-06-21T08:38:15.1783617Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1783706Z               "line": 426
2026-06-21T08:38:15.1783788Z             },
2026-06-21T08:38:15.1783869Z             {
2026-06-21T08:38:15.1783984Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1784069Z               "line": 436
2026-06-21T08:38:15.1784150Z             },
2026-06-21T08:38:15.1784232Z             {
2026-06-21T08:38:15.1784350Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1784431Z               "line": 456
2026-06-21T08:38:15.1784514Z             },
2026-06-21T08:38:15.1784595Z             {
2026-06-21T08:38:15.1784712Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1784902Z               "line": 478
2026-06-21T08:38:15.1785071Z             },
2026-06-21T08:38:15.1785153Z             {
2026-06-21T08:38:15.1785268Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1785358Z               "line": 491
2026-06-21T08:38:15.1785439Z             },
2026-06-21T08:38:15.1785521Z             {
2026-06-21T08:38:15.1785640Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T08:38:15.1785725Z               "line": 502
2026-06-21T08:38:15.1785812Z             },
2026-06-21T08:38:15.1785893Z             {
2026-06-21T08:38:15.1785997Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T08:38:15.1786083Z               "line": 108
2026-06-21T08:38:15.1786165Z             },
2026-06-21T08:38:15.1786249Z             {
2026-06-21T08:38:15.1786364Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T08:38:15.1786441Z               "line": 119
2026-06-21T08:38:15.1786522Z             },
2026-06-21T08:38:15.1786607Z             {
2026-06-21T08:38:15.1786717Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T08:38:15.1786813Z               "line": 127
2026-06-21T08:38:15.1786898Z             },
2026-06-21T08:38:15.1786979Z             {
2026-06-21T08:38:15.1787095Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1787176Z               "line": 474
2026-06-21T08:38:15.1787255Z             },
2026-06-21T08:38:15.1787331Z             {
2026-06-21T08:38:15.1787441Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1787521Z               "line": 501
2026-06-21T08:38:15.1787605Z             },
2026-06-21T08:38:15.1787681Z             {
2026-06-21T08:38:15.1787796Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1787877Z               "line": 520
2026-06-21T08:38:15.1787963Z             },
2026-06-21T08:38:15.1788044Z             {
2026-06-21T08:38:15.1788168Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1788248Z               "line": 535
2026-06-21T08:38:15.1788329Z             },
2026-06-21T08:38:15.1788407Z             {
2026-06-21T08:38:15.1788521Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1788611Z               "line": 561
2026-06-21T08:38:15.1788688Z             },
2026-06-21T08:38:15.1788769Z             {
2026-06-21T08:38:15.1788878Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1789042Z               "line": 581
2026-06-21T08:38:15.1789112Z             },
2026-06-21T08:38:15.1789193Z             {
2026-06-21T08:38:15.1789303Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1789399Z               "line": 591
2026-06-21T08:38:15.1789483Z             },
2026-06-21T08:38:15.1789560Z             {
2026-06-21T08:38:15.1789666Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1789746Z               "line": 683
2026-06-21T08:38:15.1789837Z             },
2026-06-21T08:38:15.1789913Z             {
2026-06-21T08:38:15.1790029Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1790108Z               "line": 885
2026-06-21T08:38:15.1790189Z             },
2026-06-21T08:38:15.1790270Z             {
2026-06-21T08:38:15.1790371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1790456Z               "line": 9792
2026-06-21T08:38:15.1790541Z             }
2026-06-21T08:38:15.1790618Z           ]
2026-06-21T08:38:15.1790704Z         }
2026-06-21T08:38:15.1790780Z       }
2026-06-21T08:38:15.1790860Z     },
2026-06-21T08:38:15.1790938Z     {
2026-06-21T08:38:15.1791023Z       "id": "REQ-TERM-5",
2026-06-21T08:38:15.1792509Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T08:38:15.1792803Z       "requiredStages": [
2026-06-21T08:38:15.1792889Z         "doc",
2026-06-21T08:38:15.1792971Z         "impl",
2026-06-21T08:38:15.1793056Z         "unit",
2026-06-21T08:38:15.1793137Z         "int"
2026-06-21T08:38:15.1793223Z       ],
2026-06-21T08:38:15.1793304Z       "stages": {
2026-06-21T08:38:15.1793389Z         "doc": {
2026-06-21T08:38:15.1793480Z           "complete": true,
2026-06-21T08:38:15.1793562Z           "evidence": [
2026-06-21T08:38:15.1793647Z             {
2026-06-21T08:38:15.1793742Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.1793829Z               "line": 234
2026-06-21T08:38:15.1793915Z             }
2026-06-21T08:38:15.1794000Z           ]
2026-06-21T08:38:15.1794081Z         },
2026-06-21T08:38:15.1794163Z         "impl": {
2026-06-21T08:38:15.1794262Z           "complete": true,
2026-06-21T08:38:15.1794353Z           "evidence": [
2026-06-21T08:38:15.1794429Z             {
2026-06-21T08:38:15.1794549Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1794624Z               "line": 75
2026-06-21T08:38:15.1794710Z             },
2026-06-21T08:38:15.1794793Z             {
2026-06-21T08:38:15.1794910Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1794992Z               "line": 131
2026-06-21T08:38:15.1795064Z             },
2026-06-21T08:38:15.1795145Z             {
2026-06-21T08:38:15.1795249Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1795334Z               "line": 22
2026-06-21T08:38:15.1795415Z             },
2026-06-21T08:38:15.1795496Z             {
2026-06-21T08:38:15.1795603Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1795689Z               "line": 87
2026-06-21T08:38:15.1795775Z             },
2026-06-21T08:38:15.1795852Z             {
2026-06-21T08:38:15.1795965Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T08:38:15.1796052Z               "line": 30
2026-06-21T08:38:15.1796134Z             },
2026-06-21T08:38:15.1796219Z             {
2026-06-21T08:38:15.1796333Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1796420Z               "line": 103
2026-06-21T08:38:15.1796500Z             },
2026-06-21T08:38:15.1796585Z             {
2026-06-21T08:38:15.1796696Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1796782Z               "line": 167
2026-06-21T08:38:15.1796868Z             },
2026-06-21T08:38:15.1796948Z             {
2026-06-21T08:38:15.1797073Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1797157Z               "line": 434
2026-06-21T08:38:15.1797248Z             },
2026-06-21T08:38:15.1797331Z             {
2026-06-21T08:38:15.1797435Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1797525Z               "line": 5650
2026-06-21T08:38:15.1797602Z             },
2026-06-21T08:38:15.1797684Z             {
2026-06-21T08:38:15.1797782Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1797867Z               "line": 5957
2026-06-21T08:38:15.1797948Z             }
2026-06-21T08:38:15.1798025Z           ]
2026-06-21T08:38:15.1798104Z         },
2026-06-21T08:38:15.1798180Z         "int": {
2026-06-21T08:38:15.1798280Z           "complete": true,
2026-06-21T08:38:15.1798352Z           "evidence": [
2026-06-21T08:38:15.1798447Z             {
2026-06-21T08:38:15.1798594Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T08:38:15.1798681Z               "line": 17
2026-06-21T08:38:15.1798762Z             }
2026-06-21T08:38:15.1798842Z           ]
2026-06-21T08:38:15.1798924Z         },
2026-06-21T08:38:15.1799185Z         "unit": {
2026-06-21T08:38:15.1799282Z           "complete": true,
2026-06-21T08:38:15.1799457Z           "evidence": [
2026-06-21T08:38:15.1799533Z             {
2026-06-21T08:38:15.1799654Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1799735Z               "line": 375
2026-06-21T08:38:15.1799815Z             },
2026-06-21T08:38:15.1799897Z             {
2026-06-21T08:38:15.1800015Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1800101Z               "line": 162
2026-06-21T08:38:15.1800183Z             },
2026-06-21T08:38:15.1800265Z             {
2026-06-21T08:38:15.1800363Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1800449Z               "line": 179
2026-06-21T08:38:15.1800531Z             },
2026-06-21T08:38:15.1800608Z             {
2026-06-21T08:38:15.1800711Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1800796Z               "line": 201
2026-06-21T08:38:15.1800883Z             },
2026-06-21T08:38:15.1800969Z             {
2026-06-21T08:38:15.1801073Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1801154Z               "line": 212
2026-06-21T08:38:15.1801240Z             },
2026-06-21T08:38:15.1801321Z             {
2026-06-21T08:38:15.1801421Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T08:38:15.1801508Z               "line": 223
2026-06-21T08:38:15.1801588Z             },
2026-06-21T08:38:15.1801674Z             {
2026-06-21T08:38:15.1801779Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1801870Z               "line": 1525
2026-06-21T08:38:15.1801955Z             },
2026-06-21T08:38:15.1802031Z             {
2026-06-21T08:38:15.1802152Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1802232Z               "line": 1568
2026-06-21T08:38:15.1802318Z             },
2026-06-21T08:38:15.1802403Z             {
2026-06-21T08:38:15.1802509Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1802598Z               "line": 606
2026-06-21T08:38:15.1802685Z             },
2026-06-21T08:38:15.1802771Z             {
2026-06-21T08:38:15.1802881Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1802970Z               "line": 634
2026-06-21T08:38:15.1803050Z             },
2026-06-21T08:38:15.1803132Z             {
2026-06-21T08:38:15.1803254Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1803339Z               "line": 646
2026-06-21T08:38:15.1803420Z             },
2026-06-21T08:38:15.1803502Z             {
2026-06-21T08:38:15.1803616Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1803707Z               "line": 669
2026-06-21T08:38:15.1803788Z             },
2026-06-21T08:38:15.1803874Z             {
2026-06-21T08:38:15.1803973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1804070Z               "line": 8503
2026-06-21T08:38:15.1804146Z             },
2026-06-21T08:38:15.1804231Z             {
2026-06-21T08:38:15.1804331Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1804422Z               "line": 8561
2026-06-21T08:38:15.1804499Z             }
2026-06-21T08:38:15.1804574Z           ]
2026-06-21T08:38:15.1804660Z         }
2026-06-21T08:38:15.1804732Z       }
2026-06-21T08:38:15.1804822Z     },
2026-06-21T08:38:15.1804899Z     {
2026-06-21T08:38:15.1804980Z       "id": "REQ-TERM-6",
2026-06-21T08:38:15.1806056Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T08:38:15.1806164Z       "requiredStages": [
2026-06-21T08:38:15.1806326Z         "impl",
2026-06-21T08:38:15.1806412Z         "unit",
2026-06-21T08:38:15.1806497Z         "int"
2026-06-21T08:38:15.1806651Z       ],
2026-06-21T08:38:15.1806736Z       "stages": {
2026-06-21T08:38:15.1806826Z         "doc": {
2026-06-21T08:38:15.1806922Z           "complete": false,
2026-06-21T08:38:15.1807008Z           "evidence": []
2026-06-21T08:38:15.1807094Z         },
2026-06-21T08:38:15.1807169Z         "impl": {
2026-06-21T08:38:15.1807271Z           "complete": true,
2026-06-21T08:38:15.1807347Z           "evidence": [
2026-06-21T08:38:15.1807437Z             {
2026-06-21T08:38:15.1807546Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1807628Z               "line": 132
2026-06-21T08:38:15.1807713Z             },
2026-06-21T08:38:15.1807799Z             {
2026-06-21T08:38:15.1807910Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1807991Z               "line": 187
2026-06-21T08:38:15.1808075Z             },
2026-06-21T08:38:15.1808157Z             {
2026-06-21T08:38:15.1808272Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1808357Z               "line": 17
2026-06-21T08:38:15.1808437Z             },
2026-06-21T08:38:15.1808523Z             {
2026-06-21T08:38:15.1808627Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1808725Z               "line": 104
2026-06-21T08:38:15.1808797Z             },
2026-06-21T08:38:15.1808878Z             {
2026-06-21T08:38:15.1809078Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1809154Z               "line": 319
2026-06-21T08:38:15.1809241Z             },
2026-06-21T08:38:15.1809327Z             {
2026-06-21T08:38:15.1809469Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1809556Z               "line": 396
2026-06-21T08:38:15.1809637Z             }
2026-06-21T08:38:15.1809717Z           ]
2026-06-21T08:38:15.1809799Z         },
2026-06-21T08:38:15.1809880Z         "int": {
2026-06-21T08:38:15.1809975Z           "complete": true,
2026-06-21T08:38:15.1810065Z           "evidence": [
2026-06-21T08:38:15.1810147Z             {
2026-06-21T08:38:15.1810290Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T08:38:15.1810370Z               "line": 18
2026-06-21T08:38:15.1810453Z             }
2026-06-21T08:38:15.1810538Z           ]
2026-06-21T08:38:15.1810613Z         },
2026-06-21T08:38:15.1810700Z         "unit": {
2026-06-21T08:38:15.1810796Z           "complete": true,
2026-06-21T08:38:15.1810872Z           "evidence": [
2026-06-21T08:38:15.1810957Z             {
2026-06-21T08:38:15.1811063Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1811144Z               "line": 135
2026-06-21T08:38:15.1811229Z             },
2026-06-21T08:38:15.1811309Z             {
2026-06-21T08:38:15.1811423Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1811510Z               "line": 150
2026-06-21T08:38:15.1811600Z             },
2026-06-21T08:38:15.1811685Z             {
2026-06-21T08:38:15.1811796Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1811886Z               "line": 166
2026-06-21T08:38:15.1811967Z             },
2026-06-21T08:38:15.1812039Z             {
2026-06-21T08:38:15.1812148Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T08:38:15.1812238Z               "line": 257
2026-06-21T08:38:15.1812319Z             },
2026-06-21T08:38:15.1812411Z             {
2026-06-21T08:38:15.1812530Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1812615Z               "line": 738
2026-06-21T08:38:15.1812697Z             },
2026-06-21T08:38:15.1812769Z             {
2026-06-21T08:38:15.1812882Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1812968Z               "line": 759
2026-06-21T08:38:15.1813055Z             },
2026-06-21T08:38:15.1813140Z             {
2026-06-21T08:38:15.1813361Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T08:38:15.1813449Z               "line": 726
2026-06-21T08:38:15.1813606Z             }
2026-06-21T08:38:15.1813687Z           ]
2026-06-21T08:38:15.1813776Z         }
2026-06-21T08:38:15.1813862Z       }
2026-06-21T08:38:15.1813937Z     },
2026-06-21T08:38:15.1814014Z     {
2026-06-21T08:38:15.1814101Z       "id": "REQ-TERM-7",
2026-06-21T08:38:15.1815215Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T08:38:15.1815316Z       "requiredStages": [
2026-06-21T08:38:15.1815397Z         "impl",
2026-06-21T08:38:15.1815473Z         "unit",
2026-06-21T08:38:15.1815559Z         "int"
2026-06-21T08:38:15.1815645Z       ],
2026-06-21T08:38:15.1815725Z       "stages": {
2026-06-21T08:38:15.1815816Z         "doc": {
2026-06-21T08:38:15.1815918Z           "complete": false,
2026-06-21T08:38:15.1816007Z           "evidence": []
2026-06-21T08:38:15.1816088Z         },
2026-06-21T08:38:15.1816170Z         "impl": {
2026-06-21T08:38:15.1816256Z           "complete": true,
2026-06-21T08:38:15.1816345Z           "evidence": [
2026-06-21T08:38:15.1816430Z             {
2026-06-21T08:38:15.1816545Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1816634Z               "line": 133
2026-06-21T08:38:15.1816719Z             },
2026-06-21T08:38:15.1816804Z             {
2026-06-21T08:38:15.1816915Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1817005Z               "line": 326
2026-06-21T08:38:15.1817085Z             },
2026-06-21T08:38:15.1817167Z             {
2026-06-21T08:38:15.1817282Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T08:38:15.1817372Z               "line": 15
2026-06-21T08:38:15.1817463Z             },
2026-06-21T08:38:15.1817540Z             {
2026-06-21T08:38:15.1817649Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T08:38:15.1817738Z               "line": 32
2026-06-21T08:38:15.1817821Z             },
2026-06-21T08:38:15.1817902Z             {
2026-06-21T08:38:15.1818011Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T08:38:15.1818097Z               "line": 49
2026-06-21T08:38:15.1818174Z             },
2026-06-21T08:38:15.1818254Z             {
2026-06-21T08:38:15.1818368Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1818470Z               "line": 286
2026-06-21T08:38:15.1818546Z             },
2026-06-21T08:38:15.1818625Z             {
2026-06-21T08:38:15.1818746Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1818823Z               "line": 320
2026-06-21T08:38:15.1818908Z             }
2026-06-21T08:38:15.1819045Z           ]
2026-06-21T08:38:15.1819126Z         },
2026-06-21T08:38:15.1819211Z         "int": {
2026-06-21T08:38:15.1819290Z           "complete": true,
2026-06-21T08:38:15.1819395Z           "evidence": [
2026-06-21T08:38:15.1819482Z             {
2026-06-21T08:38:15.1819628Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T08:38:15.1819724Z               "line": 19
2026-06-21T08:38:15.1819806Z             }
2026-06-21T08:38:15.1819892Z           ]
2026-06-21T08:38:15.1819972Z         },
2026-06-21T08:38:15.1820054Z         "unit": {
2026-06-21T08:38:15.1820140Z           "complete": true,
2026-06-21T08:38:15.1820226Z           "evidence": [
2026-06-21T08:38:15.1820296Z             {
2026-06-21T08:38:15.1820402Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1820501Z               "line": 455
2026-06-21T08:38:15.1820578Z             },
2026-06-21T08:38:15.1820663Z             {
2026-06-21T08:38:15.1820879Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T08:38:15.1820964Z               "line": 568
2026-06-21T08:38:15.1821145Z             },
2026-06-21T08:38:15.1821226Z             {
2026-06-21T08:38:15.1821333Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T08:38:15.1821413Z               "line": 58
2026-06-21T08:38:15.1821497Z             },
2026-06-21T08:38:15.1821579Z             {
2026-06-21T08:38:15.1821685Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T08:38:15.1821775Z               "line": 77
2026-06-21T08:38:15.1821855Z             },
2026-06-21T08:38:15.1821930Z             {
2026-06-21T08:38:15.1822041Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T08:38:15.1822136Z               "line": 87
2026-06-21T08:38:15.1822217Z             },
2026-06-21T08:38:15.1822298Z             {
2026-06-21T08:38:15.1822418Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T08:38:15.1822493Z               "line": 94
2026-06-21T08:38:15.1822589Z             },
2026-06-21T08:38:15.1822671Z             {
2026-06-21T08:38:15.1822794Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1822880Z               "line": 691
2026-06-21T08:38:15.1822967Z             },
2026-06-21T08:38:15.1823052Z             {
2026-06-21T08:38:15.1823165Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T08:38:15.1823253Z               "line": 716
2026-06-21T08:38:15.1823324Z             }
2026-06-21T08:38:15.1823414Z           ]
2026-06-21T08:38:15.1823485Z         }
2026-06-21T08:38:15.1823568Z       }
2026-06-21T08:38:15.1823653Z     },
2026-06-21T08:38:15.1823738Z     {
2026-06-21T08:38:15.1823829Z       "id": "REQ-UPD-1",
2026-06-21T08:38:15.1823945Z       "title": "Peer-propagated update over P2P",
2026-06-21T08:38:15.1824033Z       "requiredStages": [
2026-06-21T08:38:15.1824119Z         "impl",
2026-06-21T08:38:15.1824200Z         "unit",
2026-06-21T08:38:15.1824281Z         "int"
2026-06-21T08:38:15.1824360Z       ],
2026-06-21T08:38:15.1824445Z       "stages": {
2026-06-21T08:38:15.1824526Z         "doc": {
2026-06-21T08:38:15.1824613Z           "complete": false,
2026-06-21T08:38:15.1824688Z           "evidence": []
2026-06-21T08:38:15.1824769Z         },
2026-06-21T08:38:15.1824855Z         "impl": {
2026-06-21T08:38:15.1824942Z           "complete": true,
2026-06-21T08:38:15.1825027Z           "evidence": [
2026-06-21T08:38:15.1825108Z             {
2026-06-21T08:38:15.1825233Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1825318Z               "line": 28
2026-06-21T08:38:15.1825399Z             },
2026-06-21T08:38:15.1825481Z             {
2026-06-21T08:38:15.1825599Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1825685Z               "line": 103
2026-06-21T08:38:15.1825766Z             },
2026-06-21T08:38:15.1825843Z             {
2026-06-21T08:38:15.1825957Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1826043Z               "line": 342
2026-06-21T08:38:15.1826124Z             },
2026-06-21T08:38:15.1826205Z             {
2026-06-21T08:38:15.1826329Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1826410Z               "line": 22
2026-06-21T08:38:15.1826502Z             },
2026-06-21T08:38:15.1826586Z             {
2026-06-21T08:38:15.1826696Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1826788Z               "line": 207
2026-06-21T08:38:15.1826868Z             },
2026-06-21T08:38:15.1826953Z             {
2026-06-21T08:38:15.1827062Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1827148Z               "line": 283
2026-06-21T08:38:15.1827227Z             },
2026-06-21T08:38:15.1827312Z             {
2026-06-21T08:38:15.1827432Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1827514Z               "line": 340
2026-06-21T08:38:15.1827599Z             },
2026-06-21T08:38:15.1827757Z             {
2026-06-21T08:38:15.1827876Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.1828023Z               "line": 37
2026-06-21T08:38:15.1828109Z             }
2026-06-21T08:38:15.1828195Z           ]
2026-06-21T08:38:15.1828266Z         },
2026-06-21T08:38:15.1828352Z         "int": {
2026-06-21T08:38:15.1828433Z           "complete": true,
2026-06-21T08:38:15.1828528Z           "evidence": [
2026-06-21T08:38:15.1828600Z             {
2026-06-21T08:38:15.1828730Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T08:38:15.1828824Z               "line": 207
2026-06-21T08:38:15.1828900Z             },
2026-06-21T08:38:15.1829054Z             {
2026-06-21T08:38:15.1829167Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T08:38:15.1829258Z               "line": 1082
2026-06-21T08:38:15.1829340Z             }
2026-06-21T08:38:15.1829426Z           ]
2026-06-21T08:38:15.1829510Z         },
2026-06-21T08:38:15.1829600Z         "unit": {
2026-06-21T08:38:15.1829695Z           "complete": true,
2026-06-21T08:38:15.1829775Z           "evidence": [
2026-06-21T08:38:15.1829869Z             {
2026-06-21T08:38:15.1829979Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1830066Z               "line": 490
2026-06-21T08:38:15.1830146Z             },
2026-06-21T08:38:15.1830227Z             {
2026-06-21T08:38:15.1830328Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1830413Z               "line": 616
2026-06-21T08:38:15.1832907Z             },
2026-06-21T08:38:15.1833012Z             {
2026-06-21T08:38:15.1833149Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T08:38:15.1833241Z               "line": 277
2026-06-21T08:38:15.1833322Z             },
2026-06-21T08:38:15.1833411Z             {
2026-06-21T08:38:15.1833522Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.1833607Z               "line": 124
2026-06-21T08:38:15.1833711Z             },
2026-06-21T08:38:15.1833778Z             {
2026-06-21T08:38:15.1833889Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.1833979Z               "line": 200
2026-06-21T08:38:15.1834064Z             }
2026-06-21T08:38:15.1834142Z           ]
2026-06-21T08:38:15.1834228Z         }
2026-06-21T08:38:15.1834312Z       }
2026-06-21T08:38:15.1834394Z     },
2026-06-21T08:38:15.1834476Z     {
2026-06-21T08:38:15.1834556Z       "id": "REQ-UPD-2",
2026-06-21T08:38:15.1834707Z       "title": "All binaries signature-verified before handoff",
2026-06-21T08:38:15.1834788Z       "requiredStages": [
2026-06-21T08:38:15.1834874Z         "impl",
2026-06-21T08:38:15.1834958Z         "unit"
2026-06-21T08:38:15.1835029Z       ],
2026-06-21T08:38:15.1835110Z       "stages": {
2026-06-21T08:38:15.1835192Z         "doc": {
2026-06-21T08:38:15.1835282Z           "complete": false,
2026-06-21T08:38:15.1835377Z           "evidence": []
2026-06-21T08:38:15.1835454Z         },
2026-06-21T08:38:15.1835540Z         "impl": {
2026-06-21T08:38:15.1835634Z           "complete": true,
2026-06-21T08:38:15.1835716Z           "evidence": [
2026-06-21T08:38:15.1835789Z             {
2026-06-21T08:38:15.1835921Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1836002Z               "line": 343
2026-06-21T08:38:15.1836084Z             },
2026-06-21T08:38:15.1836164Z             {
2026-06-21T08:38:15.1836273Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1836360Z               "line": 476
2026-06-21T08:38:15.1836442Z             },
2026-06-21T08:38:15.1836522Z             {
2026-06-21T08:38:15.1836636Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1836728Z               "line": 29
2026-06-21T08:38:15.1836812Z             },
2026-06-21T08:38:15.1836894Z             {
2026-06-21T08:38:15.1837004Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1837095Z               "line": 271
2026-06-21T08:38:15.1837305Z             },
2026-06-21T08:38:15.1837386Z             {
2026-06-21T08:38:15.1837588Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1837679Z               "line": 288
2026-06-21T08:38:15.1837759Z             },
2026-06-21T08:38:15.1837839Z             {
2026-06-21T08:38:15.1837949Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1838035Z               "line": 408
2026-06-21T08:38:15.1838116Z             },
2026-06-21T08:38:15.1838197Z             {
2026-06-21T08:38:15.1838307Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1838383Z               "line": 558
2026-06-21T08:38:15.1838468Z             },
2026-06-21T08:38:15.1838549Z             {
2026-06-21T08:38:15.1838665Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1838741Z               "line": 155
2026-06-21T08:38:15.1838826Z             }
2026-06-21T08:38:15.1838908Z           ]
2026-06-21T08:38:15.1839069Z         },
2026-06-21T08:38:15.1839141Z         "int": {
2026-06-21T08:38:15.1839227Z           "complete": false,
2026-06-21T08:38:15.1839318Z           "evidence": []
2026-06-21T08:38:15.1839398Z         },
2026-06-21T08:38:15.1839479Z         "unit": {
2026-06-21T08:38:15.1839571Z           "complete": true,
2026-06-21T08:38:15.1839647Z           "evidence": [
2026-06-21T08:38:15.1839732Z             {
2026-06-21T08:38:15.1839837Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1839920Z               "line": 750
2026-06-21T08:38:15.1839990Z             },
2026-06-21T08:38:15.1840066Z             {
2026-06-21T08:38:15.1840179Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1840270Z               "line": 811
2026-06-21T08:38:15.1840349Z             },
2026-06-21T08:38:15.1840434Z             {
2026-06-21T08:38:15.1840539Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1840626Z               "line": 825
2026-06-21T08:38:15.1840702Z             },
2026-06-21T08:38:15.1840782Z             {
2026-06-21T08:38:15.1840888Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1840988Z               "line": 841
2026-06-21T08:38:15.1841064Z             },
2026-06-21T08:38:15.1841145Z             {
2026-06-21T08:38:15.1841255Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1841346Z               "line": 932
2026-06-21T08:38:15.1841425Z             },
2026-06-21T08:38:15.1841504Z             {
2026-06-21T08:38:15.1841622Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1841703Z               "line": 414
2026-06-21T08:38:15.1841784Z             },
2026-06-21T08:38:15.1841861Z             {
2026-06-21T08:38:15.1841970Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1842051Z               "line": 427
2026-06-21T08:38:15.1842133Z             },
2026-06-21T08:38:15.1842214Z             {
2026-06-21T08:38:15.1842347Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T08:38:15.1842428Z               "line": 410
2026-06-21T08:38:15.1842519Z             }
2026-06-21T08:38:15.1842599Z           ]
2026-06-21T08:38:15.1842681Z         }
2026-06-21T08:38:15.1842767Z       }
2026-06-21T08:38:15.1842848Z     },
2026-06-21T08:38:15.1842932Z     {
2026-06-21T08:38:15.1843032Z       "id": "REQ-UPD-3",
2026-06-21T08:38:15.1843200Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T08:38:15.1843290Z       "requiredStages": [
2026-06-21T08:38:15.1843380Z         "impl",
2026-06-21T08:38:15.1843462Z         "unit",
2026-06-21T08:38:15.1843548Z         "int"
2026-06-21T08:38:15.1843637Z       ],
2026-06-21T08:38:15.1843719Z       "stages": {
2026-06-21T08:38:15.1843806Z         "doc": {
2026-06-21T08:38:15.1843891Z           "complete": false,
2026-06-21T08:38:15.1843971Z           "evidence": []
2026-06-21T08:38:15.1844053Z         },
2026-06-21T08:38:15.1844134Z         "impl": {
2026-06-21T08:38:15.1844319Z           "complete": true,
2026-06-21T08:38:15.1844411Z           "evidence": [
2026-06-21T08:38:15.1844582Z             {
2026-06-21T08:38:15.1844707Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1844793Z               "line": 40
2026-06-21T08:38:15.1844867Z             },
2026-06-21T08:38:15.1844954Z             {
2026-06-21T08:38:15.1845060Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1845144Z               "line": 87
2026-06-21T08:38:15.1845229Z             },
2026-06-21T08:38:15.1845300Z             {
2026-06-21T08:38:15.1845415Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T08:38:15.1845499Z               "line": 1042
2026-06-21T08:38:15.1845575Z             },
2026-06-21T08:38:15.1845652Z             {
2026-06-21T08:38:15.1845762Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T08:38:15.1845847Z               "line": 1977
2026-06-21T08:38:15.1845927Z             },
2026-06-21T08:38:15.1846004Z             {
2026-06-21T08:38:15.1846119Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1846214Z               "line": 26
2026-06-21T08:38:15.1846296Z             },
2026-06-21T08:38:15.1846381Z             {
2026-06-21T08:38:15.1846500Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1846596Z               "line": 114
2026-06-21T08:38:15.1846678Z             },
2026-06-21T08:38:15.1846758Z             {
2026-06-21T08:38:15.1846867Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1846959Z               "line": 246
2026-06-21T08:38:15.1847039Z             },
2026-06-21T08:38:15.1847120Z             {
2026-06-21T08:38:15.1847230Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1847317Z               "line": 2442
2026-06-21T08:38:15.1847401Z             }
2026-06-21T08:38:15.1847482Z           ]
2026-06-21T08:38:15.1847565Z         },
2026-06-21T08:38:15.1847651Z         "int": {
2026-06-21T08:38:15.1847734Z           "complete": true,
2026-06-21T08:38:15.1847816Z           "evidence": [
2026-06-21T08:38:15.1847898Z             {
2026-06-21T08:38:15.1848021Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T08:38:15.1848106Z               "line": 58
2026-06-21T08:38:15.1848187Z             }
2026-06-21T08:38:15.1848273Z           ]
2026-06-21T08:38:15.1848357Z         },
2026-06-21T08:38:15.1848432Z         "unit": {
2026-06-21T08:38:15.1848528Z           "complete": true,
2026-06-21T08:38:15.1848610Z           "evidence": [
2026-06-21T08:38:15.1848700Z             {
2026-06-21T08:38:15.1848818Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1848901Z               "line": 532
2026-06-21T08:38:15.1849062Z             },
2026-06-21T08:38:15.1849133Z             {
2026-06-21T08:38:15.1849248Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1849334Z               "line": 585
2026-06-21T08:38:15.1849438Z             },
2026-06-21T08:38:15.1849521Z             {
2026-06-21T08:38:15.1849625Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1849715Z               "line": 653
2026-06-21T08:38:15.1849792Z             },
2026-06-21T08:38:15.1849869Z             {
2026-06-21T08:38:15.1849977Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T08:38:15.1850064Z               "line": 1102
2026-06-21T08:38:15.1850146Z             },
2026-06-21T08:38:15.1850231Z             {
2026-06-21T08:38:15.1850350Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1850432Z               "line": 271
2026-06-21T08:38:15.1850513Z             },
2026-06-21T08:38:15.1850592Z             {
2026-06-21T08:38:15.1850705Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1850787Z               "line": 295
2026-06-21T08:38:15.1850872Z             },
2026-06-21T08:38:15.1850957Z             {
2026-06-21T08:38:15.1851181Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1851266Z               "line": 316
2026-06-21T08:38:15.1851429Z             },
2026-06-21T08:38:15.1851510Z             {
2026-06-21T08:38:15.1851619Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1851710Z               "line": 332
2026-06-21T08:38:15.1851791Z             }
2026-06-21T08:38:15.1851858Z           ]
2026-06-21T08:38:15.1851938Z         }
2026-06-21T08:38:15.1852020Z       }
2026-06-21T08:38:15.1852106Z     },
2026-06-21T08:38:15.1852177Z     {
2026-06-21T08:38:15.1852263Z       "id": "REQ-UPD-4",
2026-06-21T08:38:15.1852445Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T08:38:15.1852544Z       "requiredStages": [
2026-06-21T08:38:15.1852635Z         "impl",
2026-06-21T08:38:15.1852713Z         "unit"
2026-06-21T08:38:15.1852788Z       ],
2026-06-21T08:38:15.1852878Z       "stages": {
2026-06-21T08:38:15.1852959Z         "doc": {
2026-06-21T08:38:15.1853056Z           "complete": false,
2026-06-21T08:38:15.1853140Z           "evidence": []
2026-06-21T08:38:15.1853222Z         },
2026-06-21T08:38:15.1853304Z         "impl": {
2026-06-21T08:38:15.1853399Z           "complete": true,
2026-06-21T08:38:15.1853483Z           "evidence": [
2026-06-21T08:38:15.1853568Z             {
2026-06-21T08:38:15.1853688Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1853765Z               "line": 41
2026-06-21T08:38:15.1853855Z             },
2026-06-21T08:38:15.1853931Z             {
2026-06-21T08:38:15.1854046Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1854132Z               "line": 88
2026-06-21T08:38:15.1854207Z             },
2026-06-21T08:38:15.1854294Z             {
2026-06-21T08:38:15.1854408Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T08:38:15.1854493Z               "line": 23
2026-06-21T08:38:15.1854565Z             },
2026-06-21T08:38:15.1854651Z             {
2026-06-21T08:38:15.1854770Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T08:38:15.1854846Z               "line": 56
2026-06-21T08:38:15.1854928Z             },
2026-06-21T08:38:15.1855009Z             {
2026-06-21T08:38:15.1855128Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T08:38:15.1855204Z               "line": 77
2026-06-21T08:38:15.1855286Z             },
2026-06-21T08:38:15.1855376Z             {
2026-06-21T08:38:15.1855490Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T08:38:15.1855582Z               "line": 236
2026-06-21T08:38:15.1855653Z             },
2026-06-21T08:38:15.1855738Z             {
2026-06-21T08:38:15.1855851Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T08:38:15.1855942Z               "line": 108
2026-06-21T08:38:15.1856027Z             },
2026-06-21T08:38:15.1856111Z             {
2026-06-21T08:38:15.1856231Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.1856322Z               "line": 270
2026-06-21T08:38:15.1856407Z             },
2026-06-21T08:38:15.1856488Z             {
2026-06-21T08:38:15.1856599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1856684Z               "line": 2441
2026-06-21T08:38:15.1856764Z             }
2026-06-21T08:38:15.1856851Z           ]
2026-06-21T08:38:15.1856933Z         },
2026-06-21T08:38:15.1857013Z         "int": {
2026-06-21T08:38:15.1857103Z           "complete": false,
2026-06-21T08:38:15.1857185Z           "evidence": []
2026-06-21T08:38:15.1857271Z         },
2026-06-21T08:38:15.1857351Z         "unit": {
2026-06-21T08:38:15.1857437Z           "complete": true,
2026-06-21T08:38:15.1857523Z           "evidence": [
2026-06-21T08:38:15.1857609Z             {
2026-06-21T08:38:15.1857723Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1857805Z               "line": 581
2026-06-21T08:38:15.1857886Z             },
2026-06-21T08:38:15.1857970Z             {
2026-06-21T08:38:15.1858163Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1858243Z               "line": 706
2026-06-21T08:38:15.1858381Z             },
2026-06-21T08:38:15.1858454Z             {
2026-06-21T08:38:15.1858563Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T08:38:15.1858647Z               "line": 384
2026-06-21T08:38:15.1858737Z             },
2026-06-21T08:38:15.1858823Z             {
2026-06-21T08:38:15.1858927Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T08:38:15.1859093Z               "line": 102
2026-06-21T08:38:15.1859165Z             },
2026-06-21T08:38:15.1859255Z             {
2026-06-21T08:38:15.1859383Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T08:38:15.1859466Z               "line": 123
2026-06-21T08:38:15.1859552Z             },
2026-06-21T08:38:15.1859636Z             {
2026-06-21T08:38:15.1859752Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T08:38:15.1859832Z               "line": 142
2026-06-21T08:38:15.1859913Z             },
2026-06-21T08:38:15.1859994Z             {
2026-06-21T08:38:15.1860105Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T08:38:15.1860185Z               "line": 582
2026-06-21T08:38:15.1860266Z             },
2026-06-21T08:38:15.1860342Z             {
2026-06-21T08:38:15.1860457Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T08:38:15.1860532Z               "line": 566
2026-06-21T08:38:15.1860614Z             },
2026-06-21T08:38:15.1860687Z             {
2026-06-21T08:38:15.1860796Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1860881Z               "line": 8256
2026-06-21T08:38:15.1860967Z             }
2026-06-21T08:38:15.1861049Z           ]
2026-06-21T08:38:15.1861129Z         }
2026-06-21T08:38:15.1861214Z       }
2026-06-21T08:38:15.1861285Z     },
2026-06-21T08:38:15.1861362Z     {
2026-06-21T08:38:15.1861451Z       "id": "REQ-UPD-5",
2026-06-21T08:38:15.1861592Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T08:38:15.1861693Z       "requiredStages": [
2026-06-21T08:38:15.1861770Z         "impl",
2026-06-21T08:38:15.1861860Z         "unit"
2026-06-21T08:38:15.1861931Z       ],
2026-06-21T08:38:15.1862018Z       "stages": {
2026-06-21T08:38:15.1862099Z         "doc": {
2026-06-21T08:38:15.1862189Z           "complete": false,
2026-06-21T08:38:15.1862275Z           "evidence": []
2026-06-21T08:38:15.1862352Z         },
2026-06-21T08:38:15.1862447Z         "impl": {
2026-06-21T08:38:15.1862537Z           "complete": true,
2026-06-21T08:38:15.1862629Z           "evidence": [
2026-06-21T08:38:15.1862709Z             {
2026-06-21T08:38:15.1862837Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1862924Z               "line": 27
2026-06-21T08:38:15.1863005Z             },
2026-06-21T08:38:15.1863086Z             {
2026-06-21T08:38:15.1863209Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1863301Z               "line": 87
2026-06-21T08:38:15.1863381Z             },
2026-06-21T08:38:15.1863471Z             {
2026-06-21T08:38:15.1863602Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1863686Z               "line": 145
2026-06-21T08:38:15.1863772Z             },
2026-06-21T08:38:15.1863859Z             {
2026-06-21T08:38:15.1863973Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1864057Z               "line": 492
2026-06-21T08:38:15.1864137Z             },
2026-06-21T08:38:15.1864224Z             {
2026-06-21T08:38:15.1864335Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1864424Z               "line": 546
2026-06-21T08:38:15.1864505Z             }
2026-06-21T08:38:15.1864587Z           ]
2026-06-21T08:38:15.1864673Z         },
2026-06-21T08:38:15.1864753Z         "int": {
2026-06-21T08:38:15.1864844Z           "complete": false,
2026-06-21T08:38:15.1864926Z           "evidence": []
2026-06-21T08:38:15.1865115Z         },
2026-06-21T08:38:15.1865203Z         "unit": {
2026-06-21T08:38:15.1865297Z           "complete": true,
2026-06-21T08:38:15.1865474Z           "evidence": [
2026-06-21T08:38:15.1865564Z             {
2026-06-21T08:38:15.1865688Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1865769Z               "line": 272
2026-06-21T08:38:15.1865856Z             },
2026-06-21T08:38:15.1865936Z             {
2026-06-21T08:38:15.1866060Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1866152Z               "line": 286
2026-06-21T08:38:15.1866237Z             },
2026-06-21T08:38:15.1866321Z             {
2026-06-21T08:38:15.1866450Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1866540Z               "line": 300
2026-06-21T08:38:15.1866615Z             },
2026-06-21T08:38:15.1866704Z             {
2026-06-21T08:38:15.1866829Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1866920Z               "line": 314
2026-06-21T08:38:15.1867000Z             },
2026-06-21T08:38:15.1867081Z             {
2026-06-21T08:38:15.1867215Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1867296Z               "line": 348
2026-06-21T08:38:15.1867382Z             },
2026-06-21T08:38:15.1867454Z             {
2026-06-21T08:38:15.1867578Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1867672Z               "line": 1071
2026-06-21T08:38:15.1867755Z             }
2026-06-21T08:38:15.1867836Z           ]
2026-06-21T08:38:15.1867921Z         }
2026-06-21T08:38:15.1868002Z       }
2026-06-21T08:38:15.1868084Z     },
2026-06-21T08:38:15.1868169Z     {
2026-06-21T08:38:15.1868255Z       "id": "REQ-UPD-6",
2026-06-21T08:38:15.1869123Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T08:38:15.1869221Z       "requiredStages": [
2026-06-21T08:38:15.1869307Z         "doc",
2026-06-21T08:38:15.1869417Z         "impl",
2026-06-21T08:38:15.1869501Z         "unit",
2026-06-21T08:38:15.1869581Z         "int"
2026-06-21T08:38:15.1869668Z       ],
2026-06-21T08:38:15.1869749Z       "stages": {
2026-06-21T08:38:15.1869834Z         "doc": {
2026-06-21T08:38:15.1869915Z           "complete": true,
2026-06-21T08:38:15.1869997Z           "evidence": [
2026-06-21T08:38:15.1870082Z             {
2026-06-21T08:38:15.1870220Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T08:38:15.1870302Z               "line": 3
2026-06-21T08:38:15.1870388Z             },
2026-06-21T08:38:15.1870474Z             {
2026-06-21T08:38:15.1870578Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T08:38:15.1870679Z               "line": 3
2026-06-21T08:38:15.1870759Z             },
2026-06-21T08:38:15.1870840Z             {
2026-06-21T08:38:15.1871003Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T08:38:15.1871078Z               "line": 3
2026-06-21T08:38:15.1871159Z             }
2026-06-21T08:38:15.1871242Z           ]
2026-06-21T08:38:15.1871328Z         },
2026-06-21T08:38:15.1871412Z         "impl": {
2026-06-21T08:38:15.1871508Z           "complete": true,
2026-06-21T08:38:15.1871590Z           "evidence": [
2026-06-21T08:38:15.1871676Z             {
2026-06-21T08:38:15.1871798Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1871884Z               "line": 76
2026-06-21T08:38:15.1871965Z             },
2026-06-21T08:38:15.1872039Z             {
2026-06-21T08:38:15.1872162Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1872249Z               "line": 212
2026-06-21T08:38:15.1872331Z             },
2026-06-21T08:38:15.1872415Z             {
2026-06-21T08:38:15.1872525Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1872720Z               "line": 69
2026-06-21T08:38:15.1872884Z             },
2026-06-21T08:38:15.1872969Z             {
2026-06-21T08:38:15.1873082Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1873165Z               "line": 133
2026-06-21T08:38:15.1873241Z             },
2026-06-21T08:38:15.1873331Z             {
2026-06-21T08:38:15.1873436Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1873518Z               "line": 243
2026-06-21T08:38:15.1873603Z             },
2026-06-21T08:38:15.1873674Z             {
2026-06-21T08:38:15.1873799Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1873885Z               "line": 406
2026-06-21T08:38:15.1873974Z             },
2026-06-21T08:38:15.1874056Z             {
2026-06-21T08:38:15.1874167Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1874251Z               "line": 534
2026-06-21T08:38:15.1874337Z             },
2026-06-21T08:38:15.1874424Z             {
2026-06-21T08:38:15.1874552Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1874636Z               "line": 548
2026-06-21T08:38:15.1874717Z             },
2026-06-21T08:38:15.1874799Z             {
2026-06-21T08:38:15.1874913Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1874999Z               "line": 603
2026-06-21T08:38:15.1875080Z             },
2026-06-21T08:38:15.1875161Z             {
2026-06-21T08:38:15.1875280Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1875360Z               "line": 634
2026-06-21T08:38:15.1875448Z             },
2026-06-21T08:38:15.1875528Z             {
2026-06-21T08:38:15.1875657Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T08:38:15.1875743Z               "line": 137
2026-06-21T08:38:15.1875833Z             },
2026-06-21T08:38:15.1875924Z             {
2026-06-21T08:38:15.1876053Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T08:38:15.1876144Z               "line": 184
2026-06-21T08:38:15.1876229Z             },
2026-06-21T08:38:15.1876314Z             {
2026-06-21T08:38:15.1876439Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1876534Z               "line": 78
2026-06-21T08:38:15.1876625Z             },
2026-06-21T08:38:15.1876707Z             {
2026-06-21T08:38:15.1876829Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1876924Z               "line": 114
2026-06-21T08:38:15.1877014Z             },
2026-06-21T08:38:15.1877100Z             {
2026-06-21T08:38:15.1877217Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1877303Z               "line": 185
2026-06-21T08:38:15.1877384Z             },
2026-06-21T08:38:15.1877476Z             {
2026-06-21T08:38:15.1877589Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1877685Z               "line": 260
2026-06-21T08:38:15.1877766Z             },
2026-06-21T08:38:15.1877842Z             {
2026-06-21T08:38:15.1877966Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1878048Z               "line": 292
2026-06-21T08:38:15.1878133Z             },
2026-06-21T08:38:15.1878213Z             {
2026-06-21T08:38:15.1878334Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1878419Z               "line": 323
2026-06-21T08:38:15.1878500Z             },
2026-06-21T08:38:15.1878586Z             {
2026-06-21T08:38:15.1878691Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1878777Z               "line": 346
2026-06-21T08:38:15.1878862Z             },
2026-06-21T08:38:15.1879030Z             {
2026-06-21T08:38:15.1879149Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1879230Z               "line": 388
2026-06-21T08:38:15.1879316Z             },
2026-06-21T08:38:15.1879511Z             {
2026-06-21T08:38:15.1879636Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1879810Z               "line": 398
2026-06-21T08:38:15.1879896Z             },
2026-06-21T08:38:15.1879981Z             {
2026-06-21T08:38:15.1880098Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1880189Z               "line": 410
2026-06-21T08:38:15.1880266Z             },
2026-06-21T08:38:15.1880352Z             {
2026-06-21T08:38:15.1880456Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1880543Z               "line": 420
2026-06-21T08:38:15.1880624Z             },
2026-06-21T08:38:15.1880705Z             {
2026-06-21T08:38:15.1880819Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1880896Z               "line": 439
2026-06-21T08:38:15.1880972Z             },
2026-06-21T08:38:15.1881052Z             {
2026-06-21T08:38:15.1881167Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1881263Z               "line": 449
2026-06-21T08:38:15.1881349Z             },
2026-06-21T08:38:15.1881429Z             {
2026-06-21T08:38:15.1881545Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1881629Z               "line": 94
2026-06-21T08:38:15.1881710Z             },
2026-06-21T08:38:15.1881792Z             {
2026-06-21T08:38:15.1881907Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1881986Z               "line": 120
2026-06-21T08:38:15.1882073Z             },
2026-06-21T08:38:15.1882150Z             {
2026-06-21T08:38:15.1882268Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1882353Z               "line": 135
2026-06-21T08:38:15.1882429Z             },
2026-06-21T08:38:15.1882506Z             {
2026-06-21T08:38:15.1882613Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1882703Z               "line": 162
2026-06-21T08:38:15.1882785Z             },
2026-06-21T08:38:15.1882866Z             {
2026-06-21T08:38:15.1882984Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1883066Z               "line": 174
2026-06-21T08:38:15.1883153Z             },
2026-06-21T08:38:15.1883234Z             {
2026-06-21T08:38:15.1883342Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1883419Z               "line": 185
2026-06-21T08:38:15.1883500Z             },
2026-06-21T08:38:15.1883586Z             {
2026-06-21T08:38:15.1883690Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1883787Z               "line": 451
2026-06-21T08:38:15.1883867Z             },
2026-06-21T08:38:15.1883947Z             {
2026-06-21T08:38:15.1884059Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1884144Z               "line": 573
2026-06-21T08:38:15.1884225Z             },
2026-06-21T08:38:15.1884311Z             {
2026-06-21T08:38:15.1884431Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1884515Z               "line": 171
2026-06-21T08:38:15.1884601Z             },
2026-06-21T08:38:15.1884684Z             {
2026-06-21T08:38:15.1884797Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.1884888Z               "line": 65
2026-06-21T08:38:15.1884969Z             },
2026-06-21T08:38:15.1885051Z             {
2026-06-21T08:38:15.1885163Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.1885254Z               "line": 71
2026-06-21T08:38:15.1885335Z             },
2026-06-21T08:38:15.1885421Z             {
2026-06-21T08:38:15.1885535Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T08:38:15.1885625Z               "line": 77
2026-06-21T08:38:15.1885708Z             },
2026-06-21T08:38:15.1885793Z             {
2026-06-21T08:38:15.1885897Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1885979Z               "line": 778
2026-06-21T08:38:15.1886064Z             },
2026-06-21T08:38:15.1886221Z             {
2026-06-21T08:38:15.1886328Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1886488Z               "line": 795
2026-06-21T08:38:15.1886574Z             },
2026-06-21T08:38:15.1886662Z             {
2026-06-21T08:38:15.1886760Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1886841Z               "line": 838
2026-06-21T08:38:15.1886928Z             },
2026-06-21T08:38:15.1887004Z             {
2026-06-21T08:38:15.1887108Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1887194Z               "line": 981
2026-06-21T08:38:15.1887277Z             },
2026-06-21T08:38:15.1887362Z             {
2026-06-21T08:38:15.1887470Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1887551Z               "line": 1131
2026-06-21T08:38:15.1887637Z             }
2026-06-21T08:38:15.1887716Z           ]
2026-06-21T08:38:15.1887801Z         },
2026-06-21T08:38:15.1887882Z         "int": {
2026-06-21T08:38:15.1887979Z           "complete": true,
2026-06-21T08:38:15.1888064Z           "evidence": [
2026-06-21T08:38:15.1888144Z             {
2026-06-21T08:38:15.1888274Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T08:38:15.1888355Z               "line": 569
2026-06-21T08:38:15.1888426Z             },
2026-06-21T08:38:15.1888512Z             {
2026-06-21T08:38:15.1888636Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T08:38:15.1888712Z               "line": 135
2026-06-21T08:38:15.1888792Z             }
2026-06-21T08:38:15.1888875Z           ]
2026-06-21T08:38:15.1889036Z         },
2026-06-21T08:38:15.1889122Z         "unit": {
2026-06-21T08:38:15.1889214Z           "complete": true,
2026-06-21T08:38:15.1889303Z           "evidence": [
2026-06-21T08:38:15.1889394Z             {
2026-06-21T08:38:15.1889515Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1889594Z               "line": 626
2026-06-21T08:38:15.1889675Z             },
2026-06-21T08:38:15.1889756Z             {
2026-06-21T08:38:15.1889881Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1889966Z               "line": 675
2026-06-21T08:38:15.1890048Z             },
2026-06-21T08:38:15.1890129Z             {
2026-06-21T08:38:15.1890238Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T08:38:15.1890323Z               "line": 696
2026-06-21T08:38:15.1890403Z             },
2026-06-21T08:38:15.1890490Z             {
2026-06-21T08:38:15.1890607Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1890687Z               "line": 513
2026-06-21T08:38:15.1890773Z             },
2026-06-21T08:38:15.1890855Z             {
2026-06-21T08:38:15.1890983Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1891059Z               "line": 638
2026-06-21T08:38:15.1891141Z             },
2026-06-21T08:38:15.1891222Z             {
2026-06-21T08:38:15.1891340Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1891432Z               "line": 675
2026-06-21T08:38:15.1891513Z             },
2026-06-21T08:38:15.1891598Z             {
2026-06-21T08:38:15.1891703Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1891790Z               "line": 947
2026-06-21T08:38:15.1891879Z             },
2026-06-21T08:38:15.1891951Z             {
2026-06-21T08:38:15.1892072Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1892147Z               "line": 969
2026-06-21T08:38:15.1892232Z             },
2026-06-21T08:38:15.1892313Z             {
2026-06-21T08:38:15.1892424Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1892504Z               "line": 986
2026-06-21T08:38:15.1892590Z             },
2026-06-21T08:38:15.1892667Z             {
2026-06-21T08:38:15.1892777Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1892866Z               "line": 1001
2026-06-21T08:38:15.1893051Z             },
2026-06-21T08:38:15.1893136Z             {
2026-06-21T08:38:15.1893254Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1893431Z               "line": 1027
2026-06-21T08:38:15.1893512Z             },
2026-06-21T08:38:15.1893597Z             {
2026-06-21T08:38:15.1893723Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T08:38:15.1893808Z               "line": 457
2026-06-21T08:38:15.1893888Z             },
2026-06-21T08:38:15.1893970Z             {
2026-06-21T08:38:15.1894098Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T08:38:15.1894193Z               "line": 338
2026-06-21T08:38:15.1894275Z             },
2026-06-21T08:38:15.1894361Z             {
2026-06-21T08:38:15.1896854Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1896973Z               "line": 10549
2026-06-21T08:38:15.1897058Z             },
2026-06-21T08:38:15.1897144Z             {
2026-06-21T08:38:15.1897259Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1897350Z               "line": 1260
2026-06-21T08:38:15.1897435Z             },
2026-06-21T08:38:15.1897517Z             {
2026-06-21T08:38:15.1897635Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T08:38:15.1897735Z               "line": 130
2026-06-21T08:38:15.1897817Z             }
2026-06-21T08:38:15.1897898Z           ]
2026-06-21T08:38:15.1897978Z         }
2026-06-21T08:38:15.1898058Z       }
2026-06-21T08:38:15.1898144Z     },
2026-06-21T08:38:15.1898220Z     {
2026-06-21T08:38:15.1898314Z       "id": "REQ-UPD-7",
2026-06-21T08:38:15.1900516Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T08:38:15.1900631Z       "requiredStages": [
2026-06-21T08:38:15.1900714Z         "impl",
2026-06-21T08:38:15.1900798Z         "unit"
2026-06-21T08:38:15.1900878Z       ],
2026-06-21T08:38:15.1900963Z       "stages": {
2026-06-21T08:38:15.1901040Z         "doc": {
2026-06-21T08:38:15.1901134Z           "complete": false,
2026-06-21T08:38:15.1901224Z           "evidence": []
2026-06-21T08:38:15.1901310Z         },
2026-06-21T08:38:15.1901391Z         "impl": {
2026-06-21T08:38:15.1901486Z           "complete": true,
2026-06-21T08:38:15.1901567Z           "evidence": [
2026-06-21T08:38:15.1901648Z             {
2026-06-21T08:38:15.1901754Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1901848Z               "line": 2626
2026-06-21T08:38:15.1901934Z             }
2026-06-21T08:38:15.1902007Z           ]
2026-06-21T08:38:15.1902092Z         },
2026-06-21T08:38:15.1902177Z         "int": {
2026-06-21T08:38:15.1902273Z           "complete": false,
2026-06-21T08:38:15.1902364Z           "evidence": []
2026-06-21T08:38:15.1902440Z         },
2026-06-21T08:38:15.1902526Z         "unit": {
2026-06-21T08:38:15.1902607Z           "complete": true,
2026-06-21T08:38:15.1902693Z           "evidence": [
2026-06-21T08:38:15.1902778Z             {
2026-06-21T08:38:15.1902878Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1902966Z               "line": 10525
2026-06-21T08:38:15.1903041Z             }
2026-06-21T08:38:15.1903126Z           ]
2026-06-21T08:38:15.1903208Z         }
2026-06-21T08:38:15.1903290Z       }
2026-06-21T08:38:15.1903361Z     },
2026-06-21T08:38:15.1903445Z     {
2026-06-21T08:38:15.1903540Z       "id": "REQ-UPD-8",
2026-06-21T08:38:15.1905979Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T08:38:15.1906336Z       "requiredStages": [
2026-06-21T08:38:15.1906421Z         "impl",
2026-06-21T08:38:15.1906503Z         "unit"
2026-06-21T08:38:15.1906590Z       ],
2026-06-21T08:38:15.1906679Z       "stages": {
2026-06-21T08:38:15.1906765Z         "doc": {
2026-06-21T08:38:15.1906852Z           "complete": false,
2026-06-21T08:38:15.1906933Z           "evidence": []
2026-06-21T08:38:15.1907017Z         },
2026-06-21T08:38:15.1907099Z         "impl": {
2026-06-21T08:38:15.1907185Z           "complete": true,
2026-06-21T08:38:15.1907266Z           "evidence": [
2026-06-21T08:38:15.1907346Z             {
2026-06-21T08:38:15.1907472Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1907561Z               "line": 77
2026-06-21T08:38:15.1907646Z             },
2026-06-21T08:38:15.1907729Z             {
2026-06-21T08:38:15.1907847Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1907938Z               "line": 49
2026-06-21T08:38:15.1908014Z             },
2026-06-21T08:38:15.1908092Z             {
2026-06-21T08:38:15.1908204Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1908290Z               "line": 152
2026-06-21T08:38:15.1908378Z             },
2026-06-21T08:38:15.1908449Z             {
2026-06-21T08:38:15.1908566Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1908661Z               "line": 215
2026-06-21T08:38:15.1908743Z             },
2026-06-21T08:38:15.1908827Z             {
2026-06-21T08:38:15.1909041Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1909123Z               "line": 230
2026-06-21T08:38:15.1909208Z             },
2026-06-21T08:38:15.1909283Z             {
2026-06-21T08:38:15.1909413Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1909499Z               "line": 247
2026-06-21T08:38:15.1909579Z             },
2026-06-21T08:38:15.1909661Z             {
2026-06-21T08:38:15.1909771Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1909856Z               "line": 269
2026-06-21T08:38:15.1909937Z             },
2026-06-21T08:38:15.1910024Z             {
2026-06-21T08:38:15.1910138Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1910228Z               "line": 66
2026-06-21T08:38:15.1910310Z             },
2026-06-21T08:38:15.1910390Z             {
2026-06-21T08:38:15.1910500Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1910586Z               "line": 154
2026-06-21T08:38:15.1910673Z             },
2026-06-21T08:38:15.1910757Z             {
2026-06-21T08:38:15.1910857Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1910944Z               "line": 2430
2026-06-21T08:38:15.1911025Z             },
2026-06-21T08:38:15.1911110Z             {
2026-06-21T08:38:15.1911206Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1911288Z               "line": 2493
2026-06-21T08:38:15.1911372Z             },
2026-06-21T08:38:15.1911458Z             {
2026-06-21T08:38:15.1911553Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1911629Z               "line": 2503
2026-06-21T08:38:15.1911812Z             },
2026-06-21T08:38:15.1911889Z             {
2026-06-21T08:38:15.1911980Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1912160Z               "line": 2510
2026-06-21T08:38:15.1912243Z             },
2026-06-21T08:38:15.1912328Z             {
2026-06-21T08:38:15.1912418Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1912504Z               "line": 2627
2026-06-21T08:38:15.1912586Z             },
2026-06-21T08:38:15.1912667Z             {
2026-06-21T08:38:15.1912780Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1912872Z               "line": 480
2026-06-21T08:38:15.1912952Z             },
2026-06-21T08:38:15.1913029Z             {
2026-06-21T08:38:15.1913128Z               "path": "crates/xtask/src/main.rs",
2026-06-21T08:38:15.1913220Z               "line": 494
2026-06-21T08:38:15.1913315Z             }
2026-06-21T08:38:15.1913410Z           ]
2026-06-21T08:38:15.1913492Z         },
2026-06-21T08:38:15.1913573Z         "int": {
2026-06-21T08:38:15.1913667Z           "complete": false,
2026-06-21T08:38:15.1913758Z           "evidence": []
2026-06-21T08:38:15.1913841Z         },
2026-06-21T08:38:15.1913916Z         "unit": {
2026-06-21T08:38:15.1914010Z           "complete": true,
2026-06-21T08:38:15.1914090Z           "evidence": [
2026-06-21T08:38:15.1914177Z             {
2026-06-21T08:38:15.1914298Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T08:38:15.1914383Z               "line": 476
2026-06-21T08:38:15.1914470Z             },
2026-06-21T08:38:15.1914542Z             {
2026-06-21T08:38:15.1914661Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T08:38:15.1914742Z               "line": 580
2026-06-21T08:38:15.1914828Z             },
2026-06-21T08:38:15.1914909Z             {
2026-06-21T08:38:15.1915017Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1915105Z               "line": 10527
2026-06-21T08:38:15.1915190Z             },
2026-06-21T08:38:15.1915267Z             {
2026-06-21T08:38:15.1915371Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1915457Z               "line": 10549
2026-06-21T08:38:15.1915543Z             }
2026-06-21T08:38:15.1915628Z           ]
2026-06-21T08:38:15.1915710Z         }
2026-06-21T08:38:15.1915796Z       }
2026-06-21T08:38:15.1915877Z     },
2026-06-21T08:38:15.1915958Z     {
2026-06-21T08:38:15.1916054Z       "id": "REQ-UPD-9",
2026-06-21T08:38:15.1918584Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T08:38:15.1918690Z       "requiredStages": [
2026-06-21T08:38:15.1918774Z         "doc",
2026-06-21T08:38:15.1918860Z         "impl",
2026-06-21T08:38:15.1919023Z         "unit"
2026-06-21T08:38:15.1919112Z       ],
2026-06-21T08:38:15.1919198Z       "stages": {
2026-06-21T08:38:15.1919293Z         "doc": {
2026-06-21T08:38:15.1919374Z           "complete": true,
2026-06-21T08:38:15.1919467Z           "evidence": [
2026-06-21T08:38:15.1919538Z             {
2026-06-21T08:38:15.1919640Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1919721Z               "line": 93
2026-06-21T08:38:15.1919796Z             },
2026-06-21T08:38:15.1919868Z             {
2026-06-21T08:38:15.1920064Z               "path": "docs/MANIFEST.md",
2026-06-21T08:38:15.1920154Z               "line": 285
2026-06-21T08:38:15.1920326Z             }
2026-06-21T08:38:15.1920411Z           ]
2026-06-21T08:38:15.1920492Z         },
2026-06-21T08:38:15.1920575Z         "impl": {
2026-06-21T08:38:15.1920664Z           "complete": true,
2026-06-21T08:38:15.1920745Z           "evidence": [
2026-06-21T08:38:15.1920831Z             {
2026-06-21T08:38:15.1920960Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1921046Z               "line": 128
2026-06-21T08:38:15.1921127Z             },
2026-06-21T08:38:15.1921209Z             {
2026-06-21T08:38:15.1921331Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1921417Z               "line": 533
2026-06-21T08:38:15.1921495Z             },
2026-06-21T08:38:15.1921581Z             {
2026-06-21T08:38:15.1921704Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1921796Z               "line": 459
2026-06-21T08:38:15.1921872Z             },
2026-06-21T08:38:15.1921956Z             {
2026-06-21T08:38:15.1922083Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1922165Z               "line": 505
2026-06-21T08:38:15.1922250Z             },
2026-06-21T08:38:15.1922330Z             {
2026-06-21T08:38:15.1922449Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1922531Z               "line": 928
2026-06-21T08:38:15.1922620Z             },
2026-06-21T08:38:15.1922702Z             {
2026-06-21T08:38:15.1922822Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T08:38:15.1922908Z               "line": 302
2026-06-21T08:38:15.1922983Z             },
2026-06-21T08:38:15.1923059Z             {
2026-06-21T08:38:15.1923165Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1923250Z               "line": 5675
2026-06-21T08:38:15.1923331Z             },
2026-06-21T08:38:15.1923413Z             {
2026-06-21T08:38:15.1923526Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1923607Z               "line": 5720
2026-06-21T08:38:15.1923698Z             },
2026-06-21T08:38:15.1923781Z             {
2026-06-21T08:38:15.1923879Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1923960Z               "line": 5857
2026-06-21T08:38:15.1924042Z             },
2026-06-21T08:38:15.1924128Z             {
2026-06-21T08:38:15.1924227Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1924309Z               "line": 5878
2026-06-21T08:38:15.1924386Z             },
2026-06-21T08:38:15.1924471Z             {
2026-06-21T08:38:15.1924570Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1924650Z               "line": 5901
2026-06-21T08:38:15.1924732Z             },
2026-06-21T08:38:15.1924807Z             {
2026-06-21T08:38:15.1924911Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1924997Z               "line": 5928
2026-06-21T08:38:15.1925088Z             }
2026-06-21T08:38:15.1925169Z           ]
2026-06-21T08:38:15.1925249Z         },
2026-06-21T08:38:15.1925330Z         "int": {
2026-06-21T08:38:15.1925417Z           "complete": false,
2026-06-21T08:38:15.1925498Z           "evidence": []
2026-06-21T08:38:15.1925578Z         },
2026-06-21T08:38:15.1925660Z         "unit": {
2026-06-21T08:38:15.1925736Z           "complete": true,
2026-06-21T08:38:15.1925831Z           "evidence": [
2026-06-21T08:38:15.1925907Z             {
2026-06-21T08:38:15.1926032Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T08:38:15.1926117Z               "line": 259
2026-06-21T08:38:15.1926198Z             },
2026-06-21T08:38:15.1926280Z             {
2026-06-21T08:38:15.1926384Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T08:38:15.1926470Z               "line": 657
2026-06-21T08:38:15.1926556Z             },
2026-06-21T08:38:15.1926638Z             {
2026-06-21T08:38:15.1926761Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T08:38:15.1926924Z               "line": 1107
2026-06-21T08:38:15.1927000Z             },
2026-06-21T08:38:15.1927143Z             {
2026-06-21T08:38:15.1927248Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1927343Z               "line": 7565
2026-06-21T08:38:15.1927423Z             }
2026-06-21T08:38:15.1927503Z           ]
2026-06-21T08:38:15.1927585Z         }
2026-06-21T08:38:15.1927657Z       }
2026-06-21T08:38:15.1927728Z     },
2026-06-21T08:38:15.1927808Z     {
2026-06-21T08:38:15.1927900Z       "id": "REQ-WHOAMI-1",
2026-06-21T08:38:15.1929625Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T08:38:15.1929739Z       "requiredStages": [
2026-06-21T08:38:15.1929825Z         "doc",
2026-06-21T08:38:15.1929910Z         "impl",
2026-06-21T08:38:15.1929990Z         "unit"
2026-06-21T08:38:15.1930075Z       ],
2026-06-21T08:38:15.1930156Z       "stages": {
2026-06-21T08:38:15.1930243Z         "doc": {
2026-06-21T08:38:15.1930332Z           "complete": true,
2026-06-21T08:38:15.1930428Z           "evidence": [
2026-06-21T08:38:15.1930510Z             {
2026-06-21T08:38:15.1930596Z               "path": "CONTEXT.md",
2026-06-21T08:38:15.1930675Z               "line": 707
2026-06-21T08:38:15.1930757Z             }
2026-06-21T08:38:15.1930844Z           ]
2026-06-21T08:38:15.1930915Z         },
2026-06-21T08:38:15.1930990Z         "impl": {
2026-06-21T08:38:15.1931072Z           "complete": true,
2026-06-21T08:38:15.1931163Z           "evidence": [
2026-06-21T08:38:15.1931263Z             {
2026-06-21T08:38:15.1931377Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1931459Z               "line": 3190
2026-06-21T08:38:15.1931544Z             },
2026-06-21T08:38:15.1931629Z             {
2026-06-21T08:38:15.1931731Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1931817Z               "line": 3218
2026-06-21T08:38:15.1931896Z             }
2026-06-21T08:38:15.1931973Z           ]
2026-06-21T08:38:15.1932051Z         },
2026-06-21T08:38:15.1932132Z         "int": {
2026-06-21T08:38:15.1932215Z           "complete": false,
2026-06-21T08:38:15.1932302Z           "evidence": []
2026-06-21T08:38:15.1932384Z         },
2026-06-21T08:38:15.1932470Z         "unit": {
2026-06-21T08:38:15.1932563Z           "complete": true,
2026-06-21T08:38:15.1932648Z           "evidence": [
2026-06-21T08:38:15.1932735Z             {
2026-06-21T08:38:15.1932834Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1932923Z               "line": 7847
2026-06-21T08:38:15.1933000Z             },
2026-06-21T08:38:15.1933081Z             {
2026-06-21T08:38:15.1933181Z               "path": "crates/spt/src/cli.rs",
2026-06-21T08:38:15.1933271Z               "line": 7900
2026-06-21T08:38:15.1933358Z             }
2026-06-21T08:38:15.1933434Z           ]
2026-06-21T08:38:15.1933510Z         }
2026-06-21T08:38:15.1933591Z       }
2026-06-21T08:38:15.1933673Z     }
2026-06-21T08:38:15.1933758Z   ],
2026-06-21T08:38:15.1933843Z   "findings": []
2026-06-21T08:38:15.1933924Z }
